Copiar dados de ou para o Azure Data Lake Storage Gen1 usando o Azure Data Factory ou o Azure Synapse Analytics
APLICA-SE A: Azure Data Factory Azure Synapse Analytics
Gorjeta
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!
Este artigo descreve como copiar dados de e para o Azure Data Lake Storage Gen1. Para saber mais, leia o artigo introdutório do Azure Data Factory ou do Azure Synapse Analytics.
Nota
O Azure Data Lake Storage Gen1 foi desativado em 29 de fevereiro de 2024. Migre para o conector Gen2 do Azure Data Lake Storage. Consulte este artigo para obter as diretrizes de migração do Azure Data Lake Storage Gen1.
Capacidades suportadas
Este conector do Azure Data Lake Storage Gen1 tem suporte para os seguintes recursos:
Capacidades suportadas | IR |
---|---|
Atividade de cópia (origem/coletor) | (1) (2) |
Mapeando o fluxo de dados (origem/coletor) | (1) |
Atividade de Pesquisa | (1) (2) |
Atividade GetMetadata | (1) (2) |
Excluir atividade | (1) (2) |
(1) Tempo de execução de integração do Azure (2) Tempo de execução de integração auto-hospedado
Especificamente, com este conector você pode:
- Copie arquivos usando um dos seguintes métodos de autenticação: entidade de serviço ou identidades gerenciadas para recursos do Azure.
- Copie arquivos como estão ou analise ou gere arquivos com os formatos de arquivo suportados e codecs de compressão.
- Preserve as ACLs ao copiar para o Azure Data Lake Storage Gen2.
Importante
Se você copiar dados usando o tempo de execução de integração auto-hospedado, configure o firewall corporativo para permitir o tráfego de saída para <ADLS account name>.azuredatalakestore.net
e login.microsoftonline.com/<tenant>/oauth2/token
na porta 443. Este último é o Serviço de Token de Segurança do Azure com o qual o tempo de execução de integração precisa se comunicar para obter o token de acesso.
Começar agora
Gorjeta
Para obter um passo a passo de como usar o conector do Azure Data Lake Store, consulte Carregar dados no Azure Data Lake Store.
Para executar a atividade Copiar com um pipeline, você pode usar uma das seguintes ferramentas ou SDKs:
- A ferramenta Copiar dados
- O portal do Azure
- O SDK do .NET
- O SDK do Python
- Azure PowerShell
- A API REST
- O modelo do Azure Resource Manager
Criar um serviço vinculado ao Azure Data Lake Storage Gen1 usando a interface do usuário
Use as etapas a seguir para criar um serviço vinculado ao Azure Data Lake Storage Gen1 na interface do usuário do portal do Azure.
Navegue até a guia Gerenciar em seu espaço de trabalho do Azure Data Factory ou Synapse e selecione Serviços Vinculados e, em seguida, selecione Novo:
Procure o Azure Data Lake Storage Gen1 e selecione o conector Azure Data Lake Storage Gen1.
Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.
Detalhes de configuração do conector
As seções a seguir fornecem informações sobre propriedades usadas para definir entidades específicas do Azure Data Lake Store Gen1.
Propriedades do serviço vinculado
As seguintes propriedades têm suporte para o serviço vinculado do Repositório Azure Data Lake:
Property | Descrição | Obrigatório |
---|---|---|
tipo | A type propriedade deve ser definida como AzureDataLakeStore. |
Sim |
dataLakeStoreUri | Informações sobre a conta do Repositório Azure Data Lake. Essas informações usam um dos seguintes formatos: https://[accountname].azuredatalakestore.net/webhdfs/v1 ou adl://[accountname].azuredatalakestore.net/ . |
Sim |
subscriptionId | A ID de assinatura do Azure à qual a conta do Repositório Data Lake pertence. | Necessário para pia |
resourceGroupName | O nome do grupo de recursos do Azure ao qual pertence a conta do Repositório Data Lake. | Necessário para pia |
ConecteVia | O tempo de execução de integração a ser usado para se conectar ao armazenamento de dados. Você pode usar o tempo de execução de integração do Azure ou um tempo de execução de integração auto-hospedado se seu armazenamento de dados estiver localizado em uma rede privada. Se essa propriedade não for especificada, o tempo de execução de integração padrão do Azure será usado. | Não |
Usar a autenticação da entidade de serviço
Para usar a autenticação da entidade de serviço, siga estas etapas.
Registre uma entidade de aplicativo na ID do Microsoft Entra e conceda-lhe acesso ao Repositório Data Lake. Para obter etapas detalhadas, consulte Autenticação de serviço a serviço. Anote os seguintes valores, que você usa para definir o serviço vinculado:
- ID da aplicação
- Chave de aplicação
- ID de Inquilino do
Conceda à entidade de serviço a permissão adequada. Veja exemplos de como a permissão funciona no Data Lake Storage Gen1 a partir do controle de acesso no Azure Data Lake Storage Gen1.
- Como fonte: No Data explorer>Access, conceda pelo menos a permissão Executar para TODAS as pastas upstream, incluindo a raiz, juntamente com a permissão de Leitura para os arquivos copiarem. Você pode optar por adicionar a Esta pasta e a todos os filhos para recursivo, e adicionar como uma permissão de acesso e uma entrada de permissão padrão. Não há nenhum requisito de controle de acesso no nível da conta (IAM).
- Como coletor: no Data explorer>Access, conceda pelo menos a permissão Executar para TODAS as pastas upstream, incluindo a raiz, juntamente com a permissão Gravar para a pasta do coletor. Você pode optar por adicionar a Esta pasta e a todos os filhos para recursivo, e adicionar como uma permissão de acesso e uma entrada de permissão padrão.
As seguintes propriedades são suportadas:
Property | Descrição | Obrigatório |
---|---|---|
servicePrincipalId | Especifique o ID do cliente do aplicativo. | Sim |
servicePrincipalKey | Especifique a chave do aplicativo. Marque este campo como um SecureString para armazená-lo com segurança ou faça referência a um segredo armazenado no Cofre de Chaves do Azure. |
Sim |
tenant | Especifique as informações do locatário, como nome de domínio ou ID do locatário, sob as quais seu aplicativo reside. Você pode recuperá-lo passando o mouse no canto superior direito do portal do Azure. | Sim |
azureCloudType | Para autenticação da entidade de serviço, especifique o tipo de ambiente de nuvem do Azure no qual seu aplicativo Microsoft Entra está registrado. Os valores permitidos são AzurePublic, AzureChina, AzureUsGovernment e AzureGermany. Por padrão, o ambiente de nuvem do serviço é usado. |
Não |
Exemplo:
{
"name": "AzureDataLakeStoreLinkedService",
"properties": {
"type": "AzureDataLakeStore",
"typeProperties": {
"dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
"servicePrincipalId": "<service principal id>",
"servicePrincipalKey": {
"type": "SecureString",
"value": "<service principal key>"
},
"tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
"subscriptionId": "<subscription of ADLS>",
"resourceGroupName": "<resource group of ADLS>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Usar autenticação de identidade gerenciada atribuída pelo sistema
Uma fábrica de dados ou espaço de trabalho Synapse pode ser associado a uma identidade gerenciada atribuída pelo sistema, que representa o serviço para autenticação. Você pode usar diretamente essa identidade gerenciada atribuída pelo sistema para autenticação do Repositório Data Lake, semelhante ao uso de sua própria entidade de serviço. Ele permite que esse recurso designado acesse e copie dados de ou para o Repositório Data Lake.
Para usar a autenticação de identidade gerenciada atribuída pelo sistema, siga estas etapas.
Recupere as informações de identidade gerenciadas atribuídas pelo sistema copiando o valor do "Service Identity Application ID" gerado junto com sua fábrica ou espaço de trabalho Synapse.
Conceda à identidade gerenciada atribuída pelo sistema acesso ao Repositório Data Lake. Veja exemplos de como a permissão funciona no Data Lake Storage Gen1 a partir do controle de acesso no Azure Data Lake Storage Gen1.
- Como fonte: No Data explorer>Access, conceda pelo menos a permissão Executar para TODAS as pastas upstream, incluindo a raiz, juntamente com a permissão de Leitura para os arquivos copiarem. Você pode optar por adicionar a Esta pasta e a todos os filhos para recursivo, e adicionar como uma permissão de acesso e uma entrada de permissão padrão. Não há nenhum requisito de controle de acesso no nível da conta (IAM).
- Como coletor: no Data explorer>Access, conceda pelo menos a permissão Executar para TODAS as pastas upstream, incluindo a raiz, juntamente com a permissão Gravar para a pasta do coletor. Você pode optar por adicionar a Esta pasta e a todos os filhos para recursivo, e adicionar como uma permissão de acesso e uma entrada de permissão padrão.
Não é necessário especificar outras propriedades além das informações gerais do Repositório Data Lake no serviço vinculado.
Exemplo:
{
"name": "AzureDataLakeStoreLinkedService",
"properties": {
"type": "AzureDataLakeStore",
"typeProperties": {
"dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
"subscriptionId": "<subscription of ADLS>",
"resourceGroupName": "<resource group of ADLS>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Usar autenticação de identidade gerenciada atribuída pelo usuário
Uma fábrica de dados pode ser atribuída com uma ou várias identidades gerenciadas atribuídas pelo usuário. Você pode usar essa identidade gerenciada atribuída pelo usuário para autenticação de armazenamento de Blob, que permite acessar e copiar dados de ou para o Repositório Data Lake. Para saber mais sobre identidades gerenciadas para recursos do Azure, consulte Identidades gerenciadas para recursos do Azure
Para usar a autenticação de identidade gerenciada atribuída pelo usuário, siga estas etapas:
Crie uma ou várias identidades gerenciadas atribuídas pelo usuário e conceda acesso ao Azure Data Lake. Veja exemplos de como a permissão funciona no Data Lake Storage Gen1 a partir do controle de acesso no Azure Data Lake Storage Gen1.
- Como fonte: No Data explorer>Access, conceda pelo menos a permissão Executar para TODAS as pastas upstream, incluindo a raiz, juntamente com a permissão de Leitura para os arquivos copiarem. Você pode optar por adicionar a Esta pasta e a todos os filhos para recursivo, e adicionar como uma permissão de acesso e uma entrada de permissão padrão. Não há nenhum requisito de controle de acesso no nível da conta (IAM).
- Como coletor: no Data explorer>Access, conceda pelo menos a permissão Executar para TODAS as pastas upstream, incluindo a raiz, juntamente com a permissão Gravar para a pasta do coletor. Você pode optar por adicionar a Esta pasta e a todos os filhos para recursivo, e adicionar como uma permissão de acesso e uma entrada de permissão padrão.
Atribua uma ou várias identidades gerenciadas atribuídas pelo usuário ao seu data factory e crie credenciais para cada identidade gerenciada atribuída pelo usuário.
A seguinte propriedade é suportada:
Property | Descrição | Obrigatório |
---|---|---|
credenciais | Especifique a identidade gerenciada atribuída pelo usuário como o objeto de credencial. | Sim |
Exemplo:
{
"name": "AzureDataLakeStoreLinkedService",
"properties": {
"type": "AzureDataLakeStore",
"typeProperties": {
"dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
"subscriptionId": "<subscription of ADLS>",
"resourceGroupName": "<resource group of ADLS>",
"credential": {
"referenceName": "credential1",
"type": "CredentialReference"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Propriedades do conjunto de dados
Para obter uma lista completa de seções e propriedades disponíveis para definir conjuntos de dados, consulte o artigo Conjuntos de dados.
O Azure Data Factory suporta os seguintes formatos de ficheiro. Consulte cada artigo para obter as configurações baseadas em formato.
- Formato Avro
- Formato binário
- Formato de texto delimitado
- Formato Excel
- Formato JSON
- Formato ORC
- Formato Parquet
- Formato XML
As seguintes propriedades têm suporte para o Azure Data Lake Store Gen1 em location
configurações no conjunto de dados baseado em formato:
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type em location no conjunto de dados deve ser definida como AzureDataLakeStoreLocation. |
Sim |
folderPath | O caminho para uma pasta. Se você quiser usar um curinga para filtrar pastas, ignore essa configuração e especifique-a nas configurações da fonte de atividade. | Não |
fileName | O nome do arquivo em determinado folderPath. Se você quiser usar um curinga para filtrar arquivos, ignore essa configuração e especifique-a nas configurações da fonte de atividade. | Não |
Exemplo:
{
"name": "DelimitedTextDataset",
"properties": {
"type": "DelimitedText",
"linkedServiceName": {
"referenceName": "<ADLS Gen1 linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, auto retrieved during authoring > ],
"typeProperties": {
"location": {
"type": "AzureDataLakeStoreLocation",
"folderPath": "root/folder/subfolder"
},
"columnDelimiter": ",",
"quoteChar": "\"",
"firstRowAsHeader": true,
"compressionCodec": "gzip"
}
}
}
Propriedades da atividade Copy
Para obter uma lista completa de seções e propriedades disponíveis para definir atividades, consulte Pipelines. Esta seção fornece uma lista de propriedades suportadas pela origem e pelo coletor do Repositório Azure Data Lake.
Azure Data Lake Store como origem
O Azure Data Factory suporta os seguintes formatos de ficheiro. Consulte cada artigo para obter as configurações baseadas em formato.
- Formato Avro
- Formato binário
- Formato de texto delimitado
- Formato Excel
- Formato JSON
- Formato ORC
- Formato Parquet
- Formato XML
As seguintes propriedades têm suporte para o Azure Data Lake Store Gen1 em storeSettings
configurações na fonte de cópia baseada em formato:
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type under storeSettings deve ser definida como AzureDataLakeStoreReadSettings. |
Sim |
Localize os ficheiros a copiar: | ||
OPÇÃO 1: caminho estático |
Copie do caminho da pasta/arquivo especificado no conjunto de dados. Se você quiser copiar todos os arquivos de uma pasta, especifique wildcardFileName adicionalmente como * . |
|
OPÇÃO 2: intervalo de nomes - listAfter |
Recupere as pastas/arquivos cujo nome está após esse valor em ordem alfabética (exclusivo). Ele utiliza o filtro do lado do serviço para ADLS Gen1, que fornece melhor desempenho do que um filtro curinga. O serviço aplica esse filtro ao caminho definido no conjunto de dados e apenas um nível de entidade é suportado. Veja mais exemplos em Exemplos de filtros de intervalo de nomes. |
Não |
OPÇÃO 2: intervalo de nomes - listAntes |
Recupere as pastas/arquivos cujo nome está antes desse valor alfabeticamente (inclusive). Ele utiliza o filtro do lado do serviço para ADLS Gen1, que fornece melhor desempenho do que um filtro curinga. O serviço aplica esse filtro ao caminho definido no conjunto de dados e apenas um nível de entidade é suportado. Veja mais exemplos em Exemplos de filtros de intervalo de nomes. |
Não |
OPÇÃO 3: curinga - wildcardFolderPath |
O caminho da pasta com caracteres curinga para filtrar pastas de origem. Os curingas permitidos são: * (corresponde a zero ou mais caracteres) e ? (corresponde a zero ou caractere único); use ^ para escapar se o nome da pasta real tiver curinga ou esse caractere de escape dentro. Veja mais exemplos em Exemplos de filtros de pastas e ficheiros. |
Não |
OPÇÃO 3: curinga - wildcardFileName |
O nome do arquivo com caracteres curinga em determinado folderPath/wildcardFolderPath para filtrar arquivos de origem. Os curingas permitidos são: * (corresponde a zero ou mais caracteres) e ? (corresponde a zero ou caractere único); use ^ para escapar se o nome do arquivo real tiver curinga ou esse caractere de escape dentro. Veja mais exemplos em Exemplos de filtros de pastas e ficheiros. |
Sim |
OPÇÃO 4: uma lista de ficheiros - fileListPath |
Indica para copiar um determinado conjunto de arquivos. Aponte para um arquivo de texto que inclua uma lista de arquivos que você deseja copiar, um arquivo por linha, que é o caminho relativo para o caminho configurado no conjunto de dados. Ao usar essa opção, não especifique o nome do arquivo no conjunto de dados. Veja mais exemplos em Exemplos de lista de arquivos. |
Não |
Configurações adicionais: | ||
recursiva | Indica se os dados são lidos recursivamente das subpastas ou somente da pasta especificada. Quando recursivo é definido como true e o coletor é um armazenamento baseado em arquivo, uma pasta ou subpasta vazia não é copiada ou criada no coletor. Os valores permitidos são true (padrão) e false. Esta propriedade não se aplica quando você configura fileListPath o . |
Não |
deleteFilesAfterCompletion | Indica se os arquivos binários serão excluídos do armazenamento de origem depois de serem movidos com êxito para o repositório de destino. A exclusão do arquivo é por arquivo, portanto, quando a atividade de cópia falhar, você verá que alguns arquivos já foram copiados para o destino e excluídos da origem, enquanto outros ainda permanecem no armazenamento de origem. Esta propriedade só é válida no cenário de cópia de arquivos binários. O valor padrão: false. |
Não |
modifiedDatetimeStart | Filtro de arquivos com base no atributo: Última modificação. Os arquivos são selecionados se o tempo da última modificação for maior ou igual a modifiedDatetimeStart e menor que modifiedDatetimeEnd . A hora é aplicada ao fuso horário UTC no formato "2018-12-01T05:00:00Z". As propriedades podem ser NULL, o que significa que nenhum filtro de atributo de arquivo é aplicado ao conjunto de dados. Quando modifiedDatetimeStart tem valor datetime, mas modifiedDatetimeEnd é NULL, significa que os arquivos cujo último atributo modificado é maior ou igual ao valor datetime estão selecionados. Quando modifiedDatetimeEnd tem valor datetime, mas modifiedDatetimeStart é NULL, significa que os arquivos cujo atributo da última modificação é menor que o valor datetime estão selecionados.Esta propriedade não se aplica quando você configura fileListPath o . |
Não |
modifiedDatetimeEnd | Mesmo que acima. | Não |
enablePartitionDiscovery | Para arquivos particionados, especifique se deseja analisar as partições do caminho do arquivo e adicioná-las como colunas de origem adicionais. Os valores permitidos são false (padrão) e true. |
Não |
partitionRootPath | Quando a descoberta de partições estiver habilitada, especifique o caminho raiz absoluto para ler pastas particionadas como colunas de dados. Se não for especificado, por padrão, - Quando você usa o caminho do arquivo no conjunto de dados ou na lista de arquivos na origem, o caminho da raiz da partição é o caminho configurado no conjunto de dados. - Quando você usa o filtro de pasta curinga, o caminho da raiz da partição é o subcaminho antes do primeiro curinga. Por exemplo, supondo que você configure o caminho no conjunto de dados como "root/folder/year=2020/month=08/day=27": - Se você especificar o caminho raiz da partição como "root/folder/year=2020", a atividade de cópia gerará mais duas colunas month e day com o valor "08" e "27", respectivamente, além das colunas dentro dos arquivos.- Se o caminho raiz da partição não for especificado, nenhuma coluna extra será gerada. |
Não |
maxConcurrentConnections | O limite superior de conexões simultâneas estabelecidas para o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando quiser limitar conexões simultâneas. | Não |
Exemplo:
"activities":[
{
"name": "CopyFromADLSGen1",
"type": "Copy",
"inputs": [
{
"referenceName": "<Delimited text input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "DelimitedTextSource",
"formatSettings":{
"type": "DelimitedTextReadSettings",
"skipLineCount": 10
},
"storeSettings":{
"type": "AzureDataLakeStoreReadSettings",
"recursive": true,
"wildcardFolderPath": "myfolder*A",
"wildcardFileName": "*.csv"
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
Azure Data Lake Store como coletor
O Azure Data Factory suporta os seguintes formatos de ficheiro. Consulte cada artigo para obter as configurações baseadas em formato.
As seguintes propriedades têm suporte para o Azure Data Lake Store Gen1 em storeSettings
configurações no coletor de cópia baseado em formato:
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type under storeSettings deve ser definida como AzureDataLakeStoreWriteSettings. |
Sim |
copyBehavior | Define o comportamento de cópia quando a origem são arquivos de um armazenamento de dados baseado em arquivo. Os valores permitidos são: - PreserveHierarchy (padrão): Preserva a hierarquia de arquivos na pasta de destino. O caminho relativo do arquivo de origem para a pasta de origem é idêntico ao caminho relativo do arquivo de destino para a pasta de destino. - FlattenHierarchy: Todos os arquivos da pasta de origem estão no primeiro nível da pasta de destino. Os arquivos de destino têm nomes gerados automaticamente. - MergeFiles: Mescla todos os arquivos da pasta de origem para um arquivo. Se o nome do arquivo for especificado, o nome do arquivo mesclado será o nome especificado. Caso contrário, é um nome de arquivo gerado automaticamente. |
Não |
expiryDateTime | Especifica o tempo de expiração dos arquivos gravados. A hora é aplicada à hora UTC no formato "2020-03-01T08:00:00Z". Por padrão, é NULL, o que significa que os arquivos gravados nunca expiraram. | Não |
maxConcurrentConnections | O limite superior de conexões simultâneas estabelecidas para o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando quiser limitar conexões simultâneas. | Não |
Exemplo:
"activities":[
{
"name": "CopyToADLSGen1",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Parquet output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "ParquetSink",
"storeSettings":{
"type": "AzureDataLakeStoreWriteSettings",
"copyBehavior": "PreserveHierarchy"
}
}
}
}
]
Exemplos de filtros de intervalo de nomes
Esta seção descreve o comportamento resultante dos filtros de intervalo de nomes.
Estrutura de origem da amostra | Configuração | Result |
---|---|---|
raiz a file.csv machado file2.csv ax.csv b file3.csv bx.csv c file4.csv cx.csv |
No conjunto de dados: - Caminho da pasta: root Na fonte da atividade de cópia: - Lista após: a - Lista antes: b |
Em seguida, os seguintes arquivos são copiados: raiz machado file2.csv ax.csv b file3.csv |
Exemplos de filtros de pastas e ficheiros
Esta seção descreve o comportamento resultante do caminho da pasta e do nome do arquivo com filtros curinga.
folderPath | fileName | recursiva | Estrutura da pasta de origem e resultado do filtro (arquivos em negrito são recuperados) |
---|---|---|---|
Folder* |
(Vazio, use padrão) | false | PastaA File1.csv File2.json Subpasta1 File3.csv File4.json File5.csv OutraPastaB File6.csv |
Folder* |
(Vazio, use padrão) | verdadeiro | PastaA File1.csv File2.json Subpasta1 File3.csv File4.json File5.csv OutraPastaB File6.csv |
Folder* |
*.csv |
false | PastaA File1.csv File2.json Subpasta1 File3.csv File4.json File5.csv OutraPastaB File6.csv |
Folder* |
*.csv |
verdadeiro | PastaA File1.csv File2.json Subpasta1 File3.csv File4.json File5.csv OutraPastaB File6.csv |
Exemplos de lista de ficheiros
Esta seção descreve o comportamento resultante do uso do caminho da lista de arquivos na fonte de atividade de cópia.
Supondo que você tenha a seguinte estrutura de pastas de origem e queira copiar os arquivos em negrito:
Estrutura de origem da amostra | Conteúdo em FileListToCopy.txt | Configuração |
---|---|---|
raiz PastaA File1.csv File2.json Subpasta1 File3.csv File4.json File5.csv Metadados FileListToCopy.txt |
File1.csv Subpasta1/File3.csv Subpasta1/File5.csv |
No conjunto de dados: - Caminho da pasta: root/FolderA Na fonte da atividade de cópia: - Caminho da lista de arquivos: root/Metadata/FileListToCopy.txt O caminho da lista de arquivos aponta para um arquivo de texto no mesmo armazenamento de dados que inclui uma lista de arquivos que você deseja copiar, um arquivo por linha com o caminho relativo para o caminho configurado no conjunto de dados. |
Exemplos de comportamento da operação de cópia
Esta seção descreve o comportamento resultante da operação de cópia para diferentes combinações de recursive
e copyBehavior
valores.
recursiva | copyBehavior | Estrutura da pasta de origem | Alvo resultante |
---|---|---|---|
verdadeiro | preserveHierarchy | Pasta1 Ficheiro1 Ficheiro2 Subpasta1 Ficheiro3 Ficheiro4 Ficheiro5 |
A Folder1 de destino é criada com a mesma estrutura da origem: Pasta1 Ficheiro1 Ficheiro2 Subpasta1 Ficheiro3 Ficheiro4 Ficheiro5. |
verdadeiro | achatarHierarquia | Pasta1 Ficheiro1 Ficheiro2 Subpasta1 Ficheiro3 Ficheiro4 Ficheiro5 |
A Folder1 de destino é criada com a seguinte estrutura: Pasta1 nome gerado automaticamente para File1 nome gerado automaticamente para File2 nome gerado automaticamente para File3 nome gerado automaticamente para File4 nome gerado automaticamente para File5 |
verdadeiro | mesclarArquivos | Pasta1 Ficheiro1 Ficheiro2 Subpasta1 Ficheiro3 Ficheiro4 Ficheiro5 |
A Folder1 de destino é criada com a seguinte estrutura: Pasta1 File1 + File2 + File3 + File4 + File5 conteúdo são mesclados em um arquivo, com um nome de arquivo gerado automaticamente. |
false | preserveHierarchy | Pasta1 Ficheiro1 Ficheiro2 Subpasta1 Ficheiro3 Ficheiro4 Ficheiro5 |
A Folder1 de destino é criada com a seguinte estrutura: Pasta1 Ficheiro1 Ficheiro2 Subfolder1 com File3, File4 e File5 não são coletadas. |
false | achatarHierarquia | Pasta1 Ficheiro1 Ficheiro2 Subpasta1 Ficheiro3 Ficheiro4 Ficheiro5 |
A Folder1 de destino é criada com a seguinte estrutura: Pasta1 nome gerado automaticamente para File1 nome gerado automaticamente para File2 Subfolder1 com File3, File4 e File5 não são coletadas. |
false | mesclarArquivos | Pasta1 Ficheiro1 Ficheiro2 Subpasta1 Ficheiro3 Ficheiro4 Ficheiro5 |
A Folder1 de destino é criada com a seguinte estrutura: Pasta1 O conteúdo de File1 + File2 é mesclado em um arquivo com nome de arquivo gerado automaticamente. nome gerado automaticamente para File1 Subfolder1 com File3, File4 e File5 não são coletadas. |
Preservar ACLs para o Data Lake Storage Gen2
Gorjeta
Para copiar dados do Azure Data Lake Storage Gen1 para o Gen2 em geral, consulte Copiar dados do Azure Data Lake Storage Gen1 para Gen2 para obter um passo a passo e práticas recomendadas.
Se você quiser replicar as listas de controle de acesso (ACLs) juntamente com arquivos de dados ao atualizar do Data Lake Storage Gen1 para o Data Lake Storage Gen2, consulte Preservar ACLs do Data Lake Storage Gen1.
Mapeando propriedades de fluxo de dados
Ao transformar dados em fluxos de dados de mapeamento, você pode ler e gravar arquivos do Azure Data Lake Storage Gen1 nos seguintes formatos:
As configurações específicas do formato estão localizadas na documentação desse formato. Para obter mais informações, consulte Transformação de origem no mapeamento de fluxo de dados e Transformação de coletor no mapeamento de fluxo de dados.
Transformação da fonte
Na transformação de origem, você pode ler a partir de um contêiner, pasta ou arquivo individual no Azure Data Lake Storage Gen1. A guia Opções de origem permite gerenciar como os arquivos são lidos.
Caminho curinga: o uso de um padrão curinga instruirá o serviço a percorrer cada pasta e arquivo correspondentes em uma única transformação de origem. Esta é uma maneira eficaz de processar vários arquivos dentro de um único fluxo. Adicione vários padrões de correspondência curinga com o sinal + que aparece ao passar o mouse sobre o padrão curinga existente.
No contêiner de origem, escolha uma série de arquivos que correspondam a um padrão. Somente o contêiner pode ser especificado no conjunto de dados. Portanto, o caminho curinga também deve incluir o caminho da pasta raiz.
Exemplos de curingas:
*
Representa qualquer conjunto de caracteres**
Representa o aninhamento recursivo de diretórios?
Substitui um caractere[]
Corresponde a um dos mais caracteres entre parênteses/data/sales/**/*.csv
Obtém todos os arquivos csv em /data/sales/data/sales/20??/**/
Obtém todos os arquivos recursivamente dentro de todas as pastas 20xx correspondentes/data/sales/*/*/*.csv
Obtém arquivos csv em dois níveis em /data/sales/data/sales/2004/12/[XY]1?.csv
Obtém todos os arquivos csv de dezembro de 2004, começando com X ou Y, seguido por 1 e qualquer caractere único
Caminho da raiz da partição: se você tiver pastas particionadas na fonte do arquivo com um key=value
formato (por exemplo, ano=2019), poderá atribuir o nível superior dessa árvore de pastas de partição a um nome de coluna no fluxo de dados do fluxo de dados.
Primeiro, defina um curinga para incluir todos os caminhos que são as pastas particionadas mais os arquivos folha que você deseja ler.
Use a configuração Caminho raiz da partição para definir qual é o nível superior da estrutura de pastas. Quando visualiza o conteúdo dos seus dados através de uma pré-visualização de dados, vê que o serviço adiciona as partições resolvidas encontradas em cada um dos seus níveis de pasta.
Lista de ficheiros: Este é um conjunto de ficheiros. Crie um arquivo de texto que inclua uma lista de arquivos de caminho relativos a serem processados. Aponte para este ficheiro de texto.
Coluna para armazenar o nome do arquivo: armazene o nome do arquivo de origem em uma coluna em seus dados. Insira um novo nome de coluna aqui para armazenar a cadeia de caracteres de nome de arquivo.
Após a conclusão: escolha não fazer nada com o arquivo de origem depois que o fluxo de dados for executado, exclua o arquivo de origem ou mova o arquivo de origem. Os caminhos para a mudança são relativos.
Para mover os arquivos de origem para outro local pós-processamento, primeiro selecione "Mover" para a operação do arquivo. Em seguida, defina o diretório "from". Se você não estiver usando nenhum curinga para seu caminho, a configuração "de" será a mesma pasta que a pasta de origem.
Se você tiver um caminho de origem com curinga, sua sintaxe terá esta aparência abaixo:
/data/sales/20??/**/*.csv
Você pode especificar "de" como
/data/sales
E "para" como
/backup/priorSales
Nesse caso, todos os arquivos que foram originados em /data/sales são movidos para /backup/priorSales.
Nota
As operações de arquivo são executadas somente quando você inicia o fluxo de dados de uma execução de pipeline (uma depuração de pipeline ou execução de execução) que usa a atividade Executar fluxo de dados em um pipeline. As operações de arquivo não são executadas no modo de depuração de fluxo de dados.
Filtrar por última modificação: você pode filtrar quais arquivos você processa especificando um intervalo de datas de quando eles foram modificados pela última vez. Todas as datas e horas estão em UTC.
Ativar captura de dados de alteração: se verdadeiro, você obterá arquivos novos ou alterados somente a partir da última execução. A carga inicial de dados completos de snapshot sempre será obtida na primeira execução, seguida pela captura de arquivos novos ou alterados somente nas próximas execuções. Para obter mais detalhes, consulte Alterar captura de dados.
Propriedades do lavatório
Na transformação do coletor, você pode gravar em um contêiner ou pasta no Azure Data Lake Storage Gen1. a guia Configurações permite gerenciar como os arquivos são gravados.
Limpar a pasta: determina se a pasta de destino é ou não limpa antes que os dados sejam gravados.
Opção Nome do arquivo: Determina como os arquivos de destino são nomeados na pasta de destino. As opções de nome de arquivo são:
- Padrão: permite que o Spark nomeie arquivos com base nos padrões PART.
- Padrão: insira um padrão que enumere seus arquivos de saída por partição. Por exemplo, empréstimos[n].csv cria loans1.csv, loans2.csv e assim por diante.
- Por partição: insira um nome de arquivo por partição.
- Como dados na coluna: defina o arquivo de saída com o valor de uma coluna. O caminho é relativo ao contêiner do conjunto de dados, não à pasta de destino. Se você tiver um caminho de pasta em seu conjunto de dados, ele será substituído.
- Saída para um único arquivo: combine os arquivos de saída particionados em um único arquivo nomeado. O caminho é relativo à pasta do conjunto de dados. Lembre-se de que a operação de mesclagem pode falhar com base no tamanho do nó. Esta opção não é recomendada para grandes conjuntos de dados.
Cotar tudo: Determina se todos os valores devem ser incluídos entre aspas
Propriedades da atividade de pesquisa
Para saber detalhes sobre as propriedades, verifique Atividade de pesquisa.
Propriedades de atividade GetMetadata
Para saber detalhes sobre as propriedades, verifique a atividade GetMetadata
Excluir propriedades de atividade
Para saber detalhes sobre as propriedades, marque Excluir atividade
Modelos antigos
Nota
Os modelos a seguir ainda são suportados no estado em que se encontram para compatibilidade com versões anteriores. Sugere-se que você use o novo modelo mencionado nas seções acima daqui para frente, e a interface do usuário de criação mudou para gerar o novo modelo.
Modelo de conjunto de dados herdado
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type do conjunto de dados deve ser definida como AzureDataLakeStoreFile. | Sim |
folderPath | Caminho para a pasta no Repositório Data Lake. Se não for especificado, aponta para a raiz. O filtro curinga é suportado. Os curingas permitidos são * (corresponde a zero ou mais caracteres) e ? (corresponde a zero ou caractere único). Use ^ para escapar se o nome real da pasta tiver um curinga ou esse caracter de escape dentro. Por exemplo: rootfolder/subfolder/. Veja mais exemplos em Exemplos de filtros de pastas e ficheiros. |
Não |
fileName | Nome ou filtro curinga para os arquivos sob o especificado "folderPath". Se você não especificar um valor para essa propriedade, o conjunto de dados apontará para todos os arquivos na pasta. Para filtro, os curingas permitidos são * (corresponde a zero ou mais caracteres) e ? (corresponde a zero ou caractere único).- Exemplo 1: "fileName": "*.csv" - Exemplo 2: "fileName": "???20180427.txt" Use ^ para escapar se o nome do arquivo real tiver um curinga ou esse caracter de escape dentro.Quando fileName não é especificado para um conjunto de dados de saída e preserveHierarchy não é especificado no coletor de atividade, a atividade de cópia gera automaticamente o nome do arquivo com o seguinte padrão: "Data.[ GUID do ID de execução da atividade]. [GUID se FlattenHierarchy]. [formato, se configurado]. [compressão se configurado]", por exemplo, "Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt.gz". Se você copiar de uma fonte tabular usando um nome de tabela em vez de uma consulta, o padrão de nome será "[nome da tabela].[ formato]. [compressão se configurado]", por exemplo, "MyTable.csv". |
Não |
modifiedDatetimeStart | Filtro de arquivos com base no atributo Última modificação. Os arquivos são selecionados se o tempo da última modificação for maior ou igual a modifiedDatetimeStart e menor que modifiedDatetimeEnd . A hora é aplicada ao fuso horário UTC no formato "2018-12-01T05:00:00Z". O desempenho geral da movimentação de dados é afetado ao habilitar essa configuração quando você deseja fazer o filtro de arquivos com grandes quantidades de arquivos. As propriedades podem ser NULL, o que significa que nenhum filtro de atributo de arquivo é aplicado ao conjunto de dados. Quando modifiedDatetimeStart tem um valor datetime, mas modifiedDatetimeEnd é NULL, significa que os arquivos cujo último atributo modificado é maior ou igual ao valor datetime são selecionados. Quando modifiedDatetimeEnd tem um valor datetime, mas modifiedDatetimeStart é NULL, significa que os arquivos cujo último atributo modificado é menor que o valor datetime são selecionados. |
Não |
modifiedDatetimeEnd | Filtro de arquivos com base no atributo Última modificação. Os arquivos são selecionados se o tempo da última modificação for maior ou igual a modifiedDatetimeStart e menor que modifiedDatetimeEnd . A hora é aplicada ao fuso horário UTC no formato "2018-12-01T05:00:00Z". O desempenho geral da movimentação de dados é afetado ao habilitar essa configuração quando você deseja fazer o filtro de arquivos com grandes quantidades de arquivos. As propriedades podem ser NULL, o que significa que nenhum filtro de atributo de arquivo é aplicado ao conjunto de dados. Quando modifiedDatetimeStart tem um valor datetime, mas modifiedDatetimeEnd é NULL, significa que os arquivos cujo último atributo modificado é maior ou igual ao valor datetime são selecionados. Quando modifiedDatetimeEnd tem um valor datetime, mas modifiedDatetimeStart é NULL, significa que os arquivos cujo último atributo modificado é menor que o valor datetime são selecionados. |
Não |
format | Se você quiser copiar arquivos como está entre armazenamentos baseados em arquivo (cópia binária), ignore a seção de formato nas definições de conjunto de dados de entrada e saída. Se você quiser analisar ou gerar arquivos com um formato específico, os seguintes tipos de formato de arquivo são suportados: TextFormat, JsonFormat, AvroFormat, OrcFormat e ParquetFormat. Defina a propriedade type em format como um desses valores. Para obter mais informações, consulte as seções Formato texto, Formato JSON, Formato Avro, Formato Orc e Formato Parquet. |
Não (apenas para o cenário de cópia binária) |
compressão | Especifique o tipo e o nível de compactação dos dados. Para obter mais informações, consulte Formatos de arquivo e codecs de compactação suportados. Os tipos suportados são GZip, Deflate, BZip2 e ZipDeflate. Os níveis suportados são Ótimos e Mais Rápidos. |
Não |
Gorjeta
Para copiar todos os arquivos em uma pasta, especifique somente folderPath .
Para copiar um único arquivo com um nome específico, especifique folderPath com uma parte da pasta e fileName com um nome de arquivo.
Para copiar um subconjunto de arquivos em uma pasta, especifique folderPath com uma parte da pasta e fileName com um filtro curinga.
Exemplo:
{
"name": "ADLSDataset",
"properties": {
"type": "AzureDataLakeStoreFile",
"linkedServiceName":{
"referenceName": "<ADLS linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"folderPath": "datalake/myfolder/",
"fileName": "*",
"modifiedDatetimeStart": "2018-12-01T05:00:00Z",
"modifiedDatetimeEnd": "2018-12-01T06:00:00Z",
"format": {
"type": "TextFormat",
"columnDelimiter": ",",
"rowDelimiter": "\n"
},
"compression": {
"type": "GZip",
"level": "Optimal"
}
}
}
}
Modelo de origem da atividade de cópia herdada
Property | Descrição | Obrigatório |
---|---|---|
tipo | A type propriedade da fonte de atividade de cópia deve ser definida como AzureDataLakeStoreSource. |
Sim |
recursiva | Indica se os dados são lidos recursivamente das subpastas ou somente da pasta especificada. Quando recursive é definido como true e o coletor é um armazenamento baseado em arquivo, uma pasta ou subpasta vazia não é copiada ou criada no coletor. Os valores permitidos são true (padrão) e false. |
Não |
maxConcurrentConnections | O limite superior de conexões simultâneas estabelecidas para o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando quiser limitar conexões simultâneas. | Não |
Exemplo:
"activities":[
{
"name": "CopyFromADLSGen1",
"type": "Copy",
"inputs": [
{
"referenceName": "<ADLS Gen1 input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "AzureDataLakeStoreSource",
"recursive": true
},
"sink": {
"type": "<sink type>"
}
}
}
]
Modelo de coletor de atividade de cópia herdado
Property | Descrição | Obrigatório |
---|---|---|
tipo | A type propriedade do coletor de atividade de cópia deve ser definida como AzureDataLakeStoreSink. |
Sim |
copyBehavior | Define o comportamento de cópia quando a origem são arquivos de um armazenamento de dados baseado em arquivo. Os valores permitidos são: - PreserveHierarchy (padrão): Preserva a hierarquia de arquivos na pasta de destino. O caminho relativo do arquivo de origem para a pasta de origem é idêntico ao caminho relativo do arquivo de destino para a pasta de destino. - FlattenHierarchy: Todos os arquivos da pasta de origem estão no primeiro nível da pasta de destino. Os arquivos de destino têm nomes gerados automaticamente. - MergeFiles: Mescla todos os arquivos da pasta de origem para um arquivo. Se o nome do arquivo for especificado, o nome do arquivo mesclado será o nome especificado. Caso contrário, o nome do arquivo será gerado automaticamente. |
Não |
maxConcurrentConnections | O limite superior de conexões simultâneas estabelecidas para o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando quiser limitar conexões simultâneas. | Não |
Exemplo:
"activities":[
{
"name": "CopyToADLSGen1",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<ADLS Gen1 output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzureDataLakeStoreSink",
"copyBehavior": "PreserveHierarchy"
}
}
}
]
Alterar captura de dados (visualização)
O Azure Data Factory pode obter arquivos novos ou alterados somente do Azure Data Lake Storage Gen1 habilitando Habilitar captura de dados de alteração (Visualização) na transformação da fonte de fluxo de dados de mapeamento. Com essa opção de conector, você pode ler somente arquivos novos ou atualizados e aplicar transformações antes de carregar dados transformados em conjuntos de dados de destino de sua escolha.
Certifique-se de manter o pipeline e o nome da atividade inalterados, para que o ponto de verificação possa sempre ser registrado a partir da última execução para obter alterações a partir daí. Se você alterar o nome do pipeline ou o nome da atividade, o ponto de verificação será redefinido e você começará do início na próxima execução.
Quando você depurar o pipeline, a opção Habilitar captura de dados de alteração (Visualização) também funciona. O ponto de verificação é redefinido quando você atualiza o navegador durante a execução de depuração. Depois de estar satisfeito com o resultado da execução de depuração, você pode publicar e acionar o pipeline. Ele sempre começará desde o início, independentemente do ponto de verificação anterior registrado pela execução de depuração.
Na seção de monitoramento, você sempre tem a chance de executar novamente um pipeline. Quando você está fazendo isso, as alterações são sempre obtidas a partir do registro de ponto de verificação na execução do pipeline selecionado.
Conteúdos relacionados
Para obter uma lista de armazenamentos de dados suportados como fontes e coletores pela atividade de cópia, consulte Armazenamentos de dados suportados.