Atividade Copy no Azure Data Factory e no Azure Synapse Analytics
APLICA-SE A: Azure Data Factory Azure Synapse Analytics
Dica
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!
Nos pipelines do Azure Data Factory e do Synapse, você pode usar a atividade Copy para copiar dados entre armazenamentos de dados locais e na nuvem. Depois de copiar os dados, você pode usar outras atividades para transformá-los e analisá-los ainda mais. Também é possível usar a atividade Copy para publicar resultados de análise e transformação para consumo do aplicativo e BI (business intelligence).
A atividade Copy é executada em um runtime de integração. Você pode usar diferentes tipos de runtime de integração para diferentes cenários de cópia de dados:
- Ao copiar dados entre dois armazenamentos de dados publicamente acessíveis pela Internet de qualquer IP, você pode usar o runtime de integração do Azure para a atividade Copy. Esse runtime de integração é seguro, confiável, escalonável e globalmente disponível.
- Ao copiar dados de/para armazenamentos de dados locais ou em uma rede com controle de acesso (por exemplo, uma rede virtual do Azure), você precisa configurar um runtime de integração auto-hospedada.
Um runtime de integração deve ser associado a cada armazenamento de dados de origem e de coletor. Para obter mais informações sobre como a atividade Copy determina qual runtime de integração usar, confira Determinação de qual IR usar.
Observação
Você não pode usar mais de um runtime de integração auto-hospedada na mesma atividade de Cópia. A origem e o coletor da atividade devem estar conectados com o mesmo runtime de integração auto-hospedada.
Para copiar dados de uma origem para um coletor, o serviço que executa a atividade Copy realiza estas etapas:
- Lê dados de um armazenamento de dados de origem.
- Executa a serialização/desserialização, a compactação/descompactação, o mapeamento de coluna e assim por diante. Ele realiza essas operações com base na configuração do conjunto de dados de entrada, no conjunto de dados de saída e na atividade Copy.
- Grava dados no armazenamento de dados de coletor/destino.
Observação
Se um runtime de integração auto-hospedado for usado no armazenamento dos dados de origem ou do coletor em uma atividade de Cópia, tanto a origem quanto o coletor precisam estar acessíveis a partir do servidor que hospeda o runtime de integração para que a atividade de Cópia seja bem-sucedida.
Fontes de dados e formatos com suporte
Observação
Se um conector for marcado como versão prévia, você poderá experimentá-lo e nos enviar comentários. Se você quiser uma dependência de conectores em versão prévia em sua solução, entre em contato com o Suporte do Azure.
Formatos de arquivo com suporte
O Azure Data Factory é compatível com os formatos de arquivo a seguir. Confira cada artigo para obter configurações baseadas em formato.
- Formato Avro
- Formato binário
- Formato de texto delimitado
- Formato do Excel
- Formato JSON
- Formato ORC
- Formato Parquet
- Formato XML
Você pode usar a atividade Copy para copiar arquivos no estado em que se encontram entre dois armazenamentos de dados baseados em arquivo – nesse caso, os dados são copiados de maneira eficiente sem nenhuma serialização/desserialização. Você também pode analisar ou gerar arquivos de determinado formato. Por exemplo, você pode executar o seguinte:
- Copiar dados de um banco de dados do SQL Server e gravá-los no Azure Data Lake Storage Gen2 no formato Parquet.
- Copiar arquivos no formato de texto (CSV) do sistema de arquivos local e gravá-los no Armazenamento de Blobs do Azure no formato Avro.
- Copiar arquivos compactados de um sistema de arquivos local, descompactá-los imediatamente e gravar os arquivos extraídos no Azure Data Lake Storage Gen2.
- Copiar dados em formato de texto (CSV) compactado por Gzip do Armazenamento de Blobs do Azure e gravá-los no Banco de Dados SQL do Azure.
- Muitas outras atividades que exigem serialização/desserialização ou compactação/descompactação.
Regiões com suporte
O serviço que permite a atividade Copy está disponível globalmente nas regiões e regiões geográficas listadas em Localizações do runtime de integração do Azure. A topologia globalmente disponível garante a movimentação de dados eficiente, o que geralmente evita saltos entre regiões. Confira Produtos por região para verificar a disponibilidade do Data Factory, workspaces do Synapse e a movimentação de dados em uma região específica.
Configuração
Para executar a atividade de Cópia com um pipeline, será possível usar as ferramentas ou os SDKs abaixo:
- A ferramenta Copiar Dados
- O portal do Azure
- O SDK do .NET
- O SDK do Python
- PowerShell do Azure
- A API REST
- O modelo do Azure Resource Manager
Em geral, para usar a atividade Copy nos pipelines do Synapse e Azure Data Factory, você precisa:
- Criar serviços vinculados para armazenamentos de dados de origem e de coletor. Você encontra a lista de conectores com suporte na seção Armazenamentos de dados e formatos com suporte deste artigo. Consulte a seção “Propriedades do serviço vinculado” do artigo do conector para obter informações de configuração e propriedades com suporte.
- Criar conjuntos de dados para origem e coletor. Consulte as seções "Propriedades do conjunto de dados" dos artigos do conector de origem e do coletor para obter informações de configuração e propriedades com suporte.
- Criar um pipeline com uma atividade Copy. A próxima seção fornece um exemplo.
Sintaxe
O modelo a seguir de uma atividade Copy contém uma lista completa das propriedades com suporte. Especifique as adequadas para o seu cenário.
"activities":[
{
"name": "CopyActivityTemplate",
"type": "Copy",
"inputs": [
{
"referenceName": "<source dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<sink dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>",
<properties>
},
"sink": {
"type": "<sink type>"
<properties>
},
"translator":
{
"type": "TabularTranslator",
"columnMappings": "<column mapping>"
},
"dataIntegrationUnits": <number>,
"parallelCopies": <number>,
"enableStaging": true/false,
"stagingSettings": {
<properties>
},
"enableSkipIncompatibleRow": true/false,
"redirectIncompatibleRowSettings": {
<properties>
}
}
}
]
Detalhes da sintaxe
Propriedade | Descrição | Necessário? |
---|---|---|
type | Para uma atividade Copy, defina como Copy |
Sim |
entradas | Especifique o conjunto de dados criado que aponta para os dados de origem. A atividade Copy dá suporte a apenas uma entrada. | Sim |
outputs | Especifique o conjunto de dados criado que aponta para os dados do coletor. A atividade Copy dá suporte a apenas uma saída. | Sim |
typeProperties | Especifique as propriedades para configurar a atividade Copy. | Sim |
source | Especifique o tipo de origem de cópia e as propriedades correspondentes para recuperar dados. Para obter mais informações, confira a seção "Propriedades da atividade Copy” no artigo do conector listado em Formatos e armazenamentos de dados com suporte. |
Sim |
coletor | Especifique o tipo do coletor de cópia e as propriedades correspondentes para gravar dados. Para obter mais informações, confira a seção "Propriedades da atividade Copy” no artigo do conector listado em Formatos e armazenamentos de dados com suporte. |
Sim |
tradutor | Especifique mapeamentos de coluna explícita da origem para o coletor. Essa propriedade se aplica quando o comportamento de cópia padrão não corresponde às necessidades. Para obter mais informações, confira Mapeamento de esquema na atividade Copy. |
Não |
dataIntegrationUnits | Especifique uma medida que represente a quantidade de energia que o runtime de integração do Azure usa para a cópia de dados. Essas unidades eram conhecidas como DMU (Data Movement Units) de nuvem. Para saber mais, confira Unidade de Integração de Dados. |
Não |
parallelCopies | Especifique o paralelismo que deseja que a atividade Copy use ao ler dados da origem e gravar dados no coletor. Para obter mais informações, consulte Cópia paralela. |
Não |
preservar | Especifique se deseja preservar metadados/ACLs durante a cópia de dados. Para obter mais informações, confira Preservar metadados. |
Não |
enableStaging stagingSettings |
Especifique se deseja preparar os dados provisórios em um armazenamento Blob em vez de copiar os dados diretamente da origem para o coletor. Para obter mais informações sobre cenários úteis e detalhes de configuração, confira Cópia em etapas. |
Não |
enableSkipIncompatibleRow redirectIncompatibleRowSettings |
Escolha como tratar linhas incompatíveis ao copiar dados da origem para o coletor. Para obter mais informações, consulte Tolerância a falhas. |
Não |
Monitoramento
Você pode monitorar a execução da atividade Copy nos pipelines do Synapse e Azure Data Factory visualmente e de forma programática. Para mais detalhes, confira Monitorar atividade Copy.
Cópia incremental
O Data Factory e os pipelines do Synapse permitem copiar incrementalmente dados Delta de um armazenamento de dados de origem para um armazenamento de dados do coletor. Para mais detalhes, confira Tutorial: cópia incremental de dados.
Desempenho e ajuste
A experiência de monitoramento da atividade Copy mostra as estatísticas de desempenho de cópia para cada execução da atividade. O Guia de desempenho e escalabilidade da atividade Copy descreve os principais fatores que afetam o desempenho da movimentação de dados (atividade Copy). Ele também lista os valores de desempenho observados durante o teste e discute como otimizar o desempenho da atividade Copy.
Retomar da última execução com falha
A atividade Copy dá suporte à retomada da última execução com falha ao copiar muitos arquivos no estado em que se encontram com formato binário entre armazenamentos baseados em arquivo e escolher preservar a hierarquia de pastas/arquivos da origem para o coletor, por exemplo, para migrar dados do Amazon S3 para o Azure Data Lake Storage Gen2. Ele se aplica aos seguintes conectores baseados em arquivo: Amazon S3, Armazenamento compatível com Amazon S3, Blob do Azure, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Arquivos do Azure, Sistema de Arquivos, FTP, Google Cloud Storage, HDFS, Oracle Cloud Storage e SFTP.
Você pode aproveitar a retomada da atividade Copy de duas maneiras:
Repetição de nível de atividade: você pode definir a contagem de repetições na atividade Copy. Durante a execução do pipeline, se essa execução de atividade Copy falhar, a próxima tentativa automática será iniciada no ponto de falha da última tentativa.
Executar novamente a partir da atividade com falha: após a conclusão da execução do pipeline, você também pode disparar uma nova execução da atividade com falha na exibição de monitoramento da interface do usuário do ADF ou de forma programática. Se a atividade com falha for uma atividade Copy, o pipeline será executado novamente a partir dessa atividade e também retomará a partir do ponto de falha da execução anterior.
Alguns pontos a serem observados:
- A retomada acontece no nível do arquivo. Se a atividade Copy falhar ao copiar um arquivo, esse arquivo específico será copiado novamente na próxima execução.
- Para que a retomada funcione corretamente, não altere as configurações da atividade Copy entre as próximas execuções.
- Quando você copia dados do Amazon S3, Azure Blob, Azure Data Lake Storage Gen2 e Google Cloud Storage, a atividade de cópia pode ser retomada a partir de um número arbitrário de arquivos copiados. Para o restante de conectores baseados em arquivo como fonte, a atividade Copy dá suporte à retomada de um número limitado de arquivos, geralmente no intervalo de dezenas de milhares, e varia dependendo do comprimento dos caminhos de arquivo; os arquivos que ultrapassarem esse número serão copiados novamente durante a novas execuções.
Para outros cenários que não incluem a cópia de arquivo binário, a nova execução da atividade Copy começa desde o início.
Observação
A retomada da última execução com falha por meio do runtime de integração auto-hospedada agora só tem suporte no runtime de integração auto-hospedada versão 5.43.8935.2 ou superior.
Preservar metadados junto com os dados
Ao copiar dados da origem para o coletor, em cenários como a migração do data lake, você também pode optar por preservar os metadados e ACLs juntamente com os dados usando a atividade Copy. Confira Preservar metadados para mais detalhes.
Adicionar marcas de metadados ao coletor baseado em arquivo
Quando o coletor é baseado no Armazenamento do Microsoft Azure (Armazenamento de data lake do Azure ou Armazenamento de Blobs do Azure), podemos optar por adicionar alguns metadados aos arquivos. Esses metadados aparecerão como parte das propriedades do arquivo como pares Chave-Valor. Para todos os tipos de coletores baseados em arquivo, você pode adicionar metadados que envolvem conteúdo dinâmico usando os parâmetros de pipeline, variáveis do sistema, funções e variáveis. Além disso, para o coletor baseado em arquivo binário, você tem a opção de adicionar datetime da Última Modificação (do arquivo de origem) usando a palavra-chave $$LASTMODIFIED, bem como valores personalizados como metadados para o arquivo do coletor.
Mapeamento de tipo de dados e de esquema
Confira Mapeamento de esquema e tipo de dados para obter mais informações sobre como a atividade Copy mapeia os dados de origem para o coletor.
Adicionar colunas adicionais durante a cópia
Além de copiar dados do armazenamento de dados de origem para o coletor, também é possível configurar para adicionar colunas de dados adicionais para serem copiadas junto com o coletor. Por exemplo:
- Quando copiar de uma origem baseada em arquivo, armazene o caminho relativo do arquivo como uma coluna adicional para rastrear de qual arquivo os dados são provenientes.
- Duplique a coluna de origem especificada como outra coluna.
- Adicione uma coluna com a expressão do ADF para anexar variáveis de sistema do ADF, como nome do pipeline/ID do pipeline, ou armazenar outro valor dinâmico da saída da atividade upstream.
- Adicione uma coluna com valor estático para atender à necessidade de consumo downstream.
Você pode encontrar a seguinte configuração na guia de origem da atividade Copy. Você também pode mapear essas colunas adicionais no mapeamento de esquema da atividade Copy como de costume usando os nomes de coluna definidos.
Dica
Esse recurso funciona com o modelo de conjunto de dados mais recente. Se não encontrar essa opção na interface do usuário, tente criar um novo conjunto de dados.
Para configurá-lo de forma programática, adicione a propriedade additionalColumns
na origem de atividade Copy:
Propriedade | Descrição | Obrigatório |
---|---|---|
additionalColumns | Adicione colunas de dados adicionais para copiar para o coletor. Cada objeto sob a matriz additionalColumns representa uma coluna extra. O name define o nome da coluna e value indica o valor de dados dessa coluna.Os valores de dados permitidos são: - $$FILEPATH – uma variável reservada indica armazenar o caminho relativo dos arquivos de origem para o caminho da pasta especificado no conjunto de dados. Aplique à origem baseada em arquivo.- $$COLUMN:<source_column_name> – um padrão de variável reservada indica a duplicação da coluna de origem especificada como outra coluna- Expressão - Valor estático |
Não |
Exemplo:
"activities":[
{
"name": "CopyWithAdditionalColumns",
"type": "Copy",
"inputs": [...],
"outputs": [...],
"typeProperties": {
"source": {
"type": "<source type>",
"additionalColumns": [
{
"name": "filePath",
"value": "$$FILEPATH"
},
{
"name": "newColName",
"value": "$$COLUMN:SourceColumnA"
},
{
"name": "pipelineName",
"value": {
"value": "@pipeline().Pipeline",
"type": "Expression"
}
},
{
"name": "staticValue",
"value": "sampleValue"
}
],
...
},
"sink": {
"type": "<sink type>"
}
}
}
]
Dica
Após configurar as colunas adicionais, lembre-se de mapeá-las para o seu coletor de destino na guia Mapeamento.
Criar automaticamente tabelas do coletor
Quando copiar dados para o banco de dados SQL/Azure Synapse Analytics e a tabela de destino não existir, a atividade de cópia dá suporte à criação automática da tabela com base nos dados de origem. O objetivo é ajudá-lo a começar a carregar os dados e avaliar o SQL Database/Azure Synapse Analytics. Após a ingestão de dados, você pode revisar e ajustar o esquema da tabela do coletor conforme a necessidade.
Esse recurso tem suporte ao copiar dados de qualquer fonte nos armazenamentos de dados do coletor a seguir. Você pode encontrar a opção em Interface do usuário de criação do ADF –> >Coletor de atividade Copy –> >Opção de tabela –> >Criar tabela automaticamente ou pela propriedade tableOption
no conteúdo do coletor de atividade Copy.
Tolerância a falhas
Por padrão, a atividade Copy interrompe a cópia de dados e retorna uma falha quando as linhas de dados de origem são incompatíveis com as linhas de dados do coletor. Para que a cópia seja realizada com sucesso, você pode configurar a atividade Copy para ignorar e registrar as linhas incompatíveis e copiar apenas os dados compatíveis. Confira Tolerância a falhas da atividade Copy para mais detalhes.
Verificação de consistência de dados
Quando você move dados do repositório de origem para o de destino, a atividade Copy fornece uma opção para realizar a verificação de consistência de dados adicional a fim de garantir que os dados não sejam apenas copiados com êxito da origem para o repositório de destino, mas também verificados como consistentes entre o repositório de origem e destino. Quando arquivos inconsistentes são encontrados durante a movimentação de dados, você pode anular a atividade Copy ou continuar a copiar o restante habilitando a configuração de tolerância a falhas para ignorar arquivos inconsistentes. Você pode obter os nomes de arquivos ignorados habilitando a configuração de log de sessão na atividade Copy. Confira Verificação de consistência de dados na atividade Copy para mais detalhes.
Registro de sessão
Você pode registrar os nomes de arquivos copiados, o que ajudará a garantir que os dados sejam copiados com êxito do armazenamento de origem ao de destino e também de forma consistente entre o armazenamento de origem e destino, revisando os registros de sessão da atividade Copy. Confira Atividade de cópia do login da sessão para obter mais detalhes.
Conteúdo relacionado
Consulte os seguintes guias de início rápido, tutoriais e exemplos: