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.

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) ① ②
Mapeando o fluxo de dados (origem/coletor)
Atividade de Pesquisa ① ②
Atividade GetMetadata ① ②
Excluir atividade ① ②

(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:

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.

Introdução

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:

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.

  1. 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:

  2. Procure o Azure Data Lake Storage Gen1 e selecione o conector Azure Data Lake Storage Gen1.

    Screenshot of the Azure Data Lake Storage Gen1 connector.

  3. Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.

    Screenshot of linked service configuration for Azure Data Lake Storage Gen1.

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:

Propriedade Descrição Necessá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 a conta do Repositório Data Lake pertence. 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.

  1. Registre uma entidade de aplicativo no Microsoft Entra ID 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
  2. 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:

Propriedade Descrição Necessário
servicePrincipalId Especifique o ID do cliente do aplicativo. Sim
servicePrincipalKey Especifique a chave do aplicativo. Marque este campo como um para armazená-lo com segurança ou faça referência a um SecureString segredo armazenado no Cofre de Chaves do Azure. Sim
inquilino 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

Um data factory 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.

  1. 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.

  2. 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:

  1. 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.
  2. 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:

Propriedade Descrição Necessá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.

As seguintes propriedades têm suporte para o Azure Data Lake Store Gen1 em configurações no conjunto de dados baseado em location formato:

Propriedade Descrição Necessá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.

As seguintes propriedades têm suporte para o Azure Data Lake Store Gen1 em configurações na fonte de cópia baseada em storeSettings formato:

Propriedade Descrição Necessá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 o ADLS Gen1, que oferece 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 o ADLS Gen1, que oferece 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 caracter 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 fileListPatho .
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 sã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 fileListPatho .
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 da raiz da partição como "root/folder/year=2020", a atividade de cópia gera mais duas colunas e com o valor "08" e day "27", respectivamente, além das colunas month 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 configurações no coletor de cópia baseado em storeSettings formato:

Propriedade Descrição Necessá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
        arquivo.csv
    machado
        arquivo2.csv
    machado.csv
    b
        arquivo3.csv
    bx.csv
    c
        ficheiro4.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
        arquivo2.csv
    machado.csv
    b
        arquivo3.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
    Ficheiro1.csv
    Arquivo2.json
    Subpasta1
        Ficheiro3.csv
        Arquivo4.json
        Ficheiro5.csv
OutraPastaB
    Ficheiro6.csv
Folder* (Vazio, use padrão) verdadeiro PastaA
    Ficheiro1.csv
    Arquivo2.json
    Subpasta1
        Ficheiro3.csv
        Arquivo4.json
        Ficheiro5.csv
OutraPastaB
    Ficheiro6.csv
Folder* *.csv false PastaA
    Ficheiro1.csv
    Arquivo2.json
    Subpasta1
        Ficheiro3.csv
        Arquivo4.json
        Ficheiro5.csv
OutraPastaB
    Ficheiro6.csv
Folder* *.csv verdadeiro PastaA
    Ficheiro1.csv
    Arquivo2.json
    Subpasta1
        Ficheiro3.csv
        Arquivo4.json
        Ficheiro5.csv
OutraPastaB
    Ficheiro6.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
        Ficheiro1.csv
        Arquivo2.json
        Subpasta1
            Ficheiro3.csv
            Arquivo4.json
            Ficheiro5.csv
    Metadados
        FileListToCopy.txt
Ficheiro1.csv
Subpasta1/Ficheiro3.csv
Subpasta1/Ficheiro5.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.

Screenshot of source options tab in mapping data flow source transformation.

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 formato (por exemplo, ano=2019), poderá atribuir o nível superior dessa árvore de pastas de partição a um key=value 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.

Screenshot of partition source file settings in mapping data flow source transformation.

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.

Partition root path

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.

Screenshot showing Enable change data capture.

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.

sink options

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 empréstimos1.csv, empréstimos2.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

Propriedade Descrição Necessá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

Propriedade Descrição Necessá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

Propriedade Descrição Necessá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.

Para obter uma lista de armazenamentos de dados suportados como fontes e coletores pela atividade de cópia, consulte Armazenamentos de dados suportados.