Copiar dados de e para o Azure Databricks Delta Lake 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 usar a atividade Copiar no Azure Data Factory e no Azure Synapse para copiar dados de e para o Azure Databricks Delta Lake. Ele se baseia no artigo Atividade de cópia, que apresenta uma visão geral da atividade de cópia.
Capacidades suportadas
Este conector Delta Lake do Azure Databricks 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) |
(1) Tempo de execução de integração do Azure (2) Tempo de execução de integração auto-hospedado
Em geral, o serviço suporta Delta Lake com os seguintes recursos para atender às suas várias necessidades.
- A atividade de cópia suporta o conector Delta Lake do Azure Databricks para copiar dados de qualquer armazenamento de dados de origem suportado para a tabela delta lake do Azure Databricks e da tabela delta lake para qualquer armazenamento de dados de coletor suportado. Ele aproveita seu cluster Databricks para executar a movimentação de dados, consulte os detalhes na seção Pré-requisitos.
- O Fluxo de Dados de Mapeamento dá suporte ao formato Delta genérico no Armazenamento do Azure como origem e coletor para ler e gravar arquivos Delta para ETL sem código e é executado no Tempo de Execução de Integração do Azure gerenciado.
- As atividades do Databricks suportam a orquestração de sua carga de trabalho de ETL ou aprendizado de máquina centrada em código no topo do delta lake.
Pré-requisitos
Para usar esse conector Delta Lake do Azure Databricks, você precisa configurar um cluster no Azure Databricks.
- Para copiar dados para o delta lake, a atividade de cópia invoca o cluster do Azure Databricks para ler dados de um Armazenamento do Azure, que é sua fonte original ou uma área de preparo na qual o serviço grava primeiro os dados de origem por meio de cópia em estágios interna. Saiba mais com o lago Delta como pia.
- Da mesma forma, para copiar dados do delta lake, a atividade de cópia invoca o cluster do Azure Databricks para gravar dados em um Armazenamento do Azure, que é seu coletor original ou uma área de preparo de onde o serviço continua a gravar dados no coletor final por meio de cópia em estágios interna. Saiba mais a partir do lago Delta como fonte.
O cluster Databricks precisa ter acesso ao Blob do Azure ou à conta do Azure Data Lake Storage Gen2, tanto o contêiner/sistema de arquivos de armazenamento usado para origem/coletor/preparo quanto o contêiner/sistema de arquivos onde você deseja gravar as tabelas Delta Lake.
Para usar o Azure Data Lake Storage Gen2, você pode configurar uma entidade de serviço no cluster Databricks como parte da configuração do Apache Spark. Siga as etapas no Access diretamente com a entidade de serviço.
Para usar o armazenamento de Blob do Azure, você pode configurar uma chave de acesso de conta de armazenamento ou token SAS no cluster Databricks como parte da configuração do Apache Spark. Siga as etapas em Armazenamento de Blob do Azure do Access usando a API RDD.
Durante a execução da atividade de cópia, se o cluster configurado tiver sido encerrado, o serviço o iniciará automaticamente. Se você criar pipeline usando a interface do usuário de criação, para operações como visualização de dados, precisará ter um cluster ativo, o serviço não iniciará o cluster em seu nome.
Especificar a configuração do cluster
Na lista suspensa Modo de Cluster, selecione Padrão.
Na lista suspensa Versão do tempo de execução do Databricks, selecione uma versão do tempo de execução do Databricks.
Ative a Otimização Automática adicionando as seguintes propriedades à configuração do Spark:
spark.databricks.delta.optimizeWrite.enabled true spark.databricks.delta.autoCompact.enabled true
Configure seu cluster dependendo de suas necessidades de integração e dimensionamento.
Para obter detalhes de configuração de cluster, consulte Configurar clusters.
Começar agora
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 Databricks Delta Lake usando a interface do usuário
Use as etapas a seguir para criar um serviço vinculado ao Azure Databricks Delta Lake 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 clique em Novo:
Procure delta e selecione o conector Delta Lake do Azure Databricks.
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 detalhes sobre propriedades que definem entidades específicas para um conector Delta Lake do Azure Databricks.
Propriedades do serviço vinculado
Este conector Delta Lake do Azure Databricks suporta os seguintes tipos de autenticação. Consulte as seções correspondentes para obter detalhes.
- Token de acesso
- Autenticação de identidade gerenciada atribuída pelo sistema
- Autenticação de identidade gerenciada atribuída pelo usuário
Token de acesso
As seguintes propriedades têm suporte para o serviço vinculado Delta Lake do Azure Databricks:
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type deve ser definida como AzureDatabricksDeltaLake. | Sim |
domínio | Especifique a URL do espaço de trabalho do Azure Databricks, por exemplo. https://adb-xxxxxxxxx.xx.azuredatabricks.net |
|
clusterId | Especifique a ID do cluster de um cluster existente. Deve ser um Cluster Interativo já criado. Você pode encontrar a ID do Cluster Interativo no espaço de trabalho Databricks -> Clusters -> Nome do Cluster Interativo -> Configuração -> Tags. Mais informações. |
|
accessToken | O token de acesso é necessário para que o serviço se autentique no Azure Databricks. O token de acesso precisa ser gerado a partir do espaço de trabalho databricks. Etapas mais detalhadas para encontrar o token de acesso podem ser encontradas aqui. | |
ConecteVia | O tempo de execução de integração que é 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 não for especificado, ele usará o tempo de execução de integração padrão do Azure. | Não |
Exemplo:
{
"name": "AzureDatabricksDeltaLakeLinkedService",
"properties": {
"type": "AzureDatabricksDeltaLake",
"typeProperties": {
"domain": "https://adb-xxxxxxxxx.xx.azuredatabricks.net",
"clusterId": "<cluster id>",
"accessToken": {
"type": "SecureString",
"value": "<access token>"
}
}
}
}
Autenticação de identidade gerenciada atribuída pelo sistema
Para saber mais sobre identidades gerenciadas atribuídas pelo sistema para recursos do Azure, consulte identidade gerenciada atribuída pelo sistema para recursos do Azure.
Para usar a autenticação de identidade gerenciada atribuída pelo sistema, siga estas etapas para conceder permissões:
Recupere as informações de identidade gerenciadas copiando o valor do ID do objeto de identidade gerenciado gerado junto com sua fábrica de dados ou espaço de trabalho Synapse.
Conceda à identidade gerenciada as permissões corretas no Azure Databricks. Em geral, você deve conceder pelo menos a função de Colaborador à sua identidade gerenciada atribuída ao sistema no Controle de acesso (IAM) do Azure Databricks.
As seguintes propriedades têm suporte para o serviço vinculado Delta Lake do Azure Databricks:
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type deve ser definida como AzureDatabricksDeltaLake. | Sim |
domínio | Especifique a URL do espaço de trabalho do Azure Databricks, por exemplo. https://adb-xxxxxxxxx.xx.azuredatabricks.net |
Sim |
clusterId | Especifique a ID do cluster de um cluster existente. Deve ser um Cluster Interativo já criado. Você pode encontrar a ID do Cluster Interativo no espaço de trabalho Databricks -> Clusters -> Nome do Cluster Interativo -> Configuração -> Tags. Mais informações. |
Sim |
workspaceResourceId | Especifique a ID do recurso de espaço de trabalho do seu Azure Databricks. | Sim |
ConecteVia | O tempo de execução de integração que é 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 não for especificado, ele usará o tempo de execução de integração padrão do Azure. | Não |
Exemplo:
{
"name": "AzureDatabricksDeltaLakeLinkedService",
"properties": {
"type": "AzureDatabricksDeltaLake",
"typeProperties": {
"domain": "https://adb-xxxxxxxxx.xx.azuredatabricks.net",
"clusterId": "<cluster id>",
"workspaceResourceId": "<workspace resource id>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Autenticação de identidade gerenciada atribuída pelo usuário
Para saber mais sobre identidades gerenciadas atribuídas pelo usuário para recursos do Azure, consulte Identidades gerenciadas atribuídas pelo usuário
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 permissão em seu Azure Databricks. Em geral, você deve conceder pelo menos a função de Colaborador à sua identidade gerenciada atribuída pelo usuário no Controle de acesso (IAM) do Azure Databricks.
Atribua uma ou várias identidades gerenciadas atribuídas pelo usuário ao seu data factory ou espaço de trabalho Synapse e crie credenciais para cada identidade gerenciada atribuída pelo usuário.
As seguintes propriedades têm suporte para o serviço vinculado Delta Lake do Azure Databricks:
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type deve ser definida como AzureDatabricksDeltaLake. | Sim |
domínio | Especifique a URL do espaço de trabalho do Azure Databricks, por exemplo. https://adb-xxxxxxxxx.xx.azuredatabricks.net |
Sim |
clusterId | Especifique a ID do cluster de um cluster existente. Deve ser um Cluster Interativo já criado. Você pode encontrar a ID do Cluster Interativo no espaço de trabalho Databricks -> Clusters -> Nome do Cluster Interativo -> Configuração -> Tags. Mais informações. |
Sim |
credenciais | Especifique a identidade gerenciada atribuída pelo usuário como o objeto de credencial. | Sim |
workspaceResourceId | Especifique a ID do recurso de espaço de trabalho do seu Azure Databricks. | Sim |
ConecteVia | O tempo de execução de integração que é 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 não for especificado, ele usará o tempo de execução de integração padrão do Azure. | Não |
Exemplo:
{
"name": "AzureDatabricksDeltaLakeLinkedService",
"properties": {
"type": "AzureDatabricksDeltaLake",
"typeProperties": {
"domain": "https://adb-xxxxxxxxx.xx.azuredatabricks.net",
"clusterId": "<cluster id>",
"credential": {
"referenceName": "credential1",
"type": "CredentialReference"
},
"workspaceResourceId": "<workspace resource id>"
},
"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.
As propriedades a seguir têm suporte para o conjunto de dados Delta Lake do Azure Databricks.
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type do conjunto de dados deve ser definida como AzureDatabricksDeltaLakeDataset. | Sim |
base de dados | Nome do banco de dados. | Não para a fonte, sim para a pia |
tabela | Nome da tabela delta. | Não para a fonte, sim para a pia |
Exemplo:
{
"name": "AzureDatabricksDeltaLakeDataset",
"properties": {
"type": "AzureDatabricksDeltaLakeDataset",
"typeProperties": {
"database": "<database name>",
"table": "<delta table name>"
},
"schema": [ < physical schema, optional, retrievable during authoring > ],
"linkedServiceName": {
"referenceName": "<name of linked service>",
"type": "LinkedServiceReference"
}
}
}
Propriedades da atividade Copy
Para obter uma lista completa de seções e propriedades disponíveis para definir atividades, consulte o artigo Pipelines . Esta seção fornece uma lista de propriedades suportadas pela origem e coletor do Azure Databricks Delta Lake.
Lago Delta como fonte
Para copiar dados do Azure Databricks Delta Lake, as seguintes propriedades são suportadas na seção Copiar fonte de atividade.
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type da fonte de atividade Copy deve ser definida como AzureDatabricksDeltaLakeSource. | Sim |
query | Especifique a consulta SQL para ler dados. Para o controle de viagem no tempo, siga o padrão abaixo: - SELECT * FROM events TIMESTAMP AS OF timestamp_expression - SELECT * FROM events VERSION AS OF version |
Não |
exportSettings | Configurações avançadas usadas para recuperar dados da tabela delta. | Não |
Em exportSettings : |
||
tipo | O tipo de comando de exportação, definido como AzureDatabricksDeltaLakeExportCommand. | Sim |
dateFormat | Formate o tipo de data para cadeia de caracteres com um formato de data. Os formatos de data personalizados seguem os formatos no padrão datetime. Se não for especificado, ele usará o valor yyyy-MM-dd padrão . |
Não |
timestampFormat | Formate o tipo de carimbo de data/hora para cadeia de caracteres com um formato de carimbo de data/hora. Os formatos de data personalizados seguem os formatos no padrão datetime. Se não for especificado, ele usará o valor yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] padrão . |
Não |
Cópia direta do lago delta
Se o armazenamento de dados e o formato do coletor atenderem aos critérios descritos nesta seção, você poderá usar a atividade Copiar para copiar diretamente da tabela Delta do Azure Databricks para o coletor. O serviço verifica as configurações e falha na execução da atividade Copiar se os seguintes critérios não forem atendidos:
O serviço vinculado do coletor é o armazenamento de Blob do Azure ou o Azure Data Lake Storage Gen2. A credencial da conta deve ser pré-configurada na configuração de cluster do Azure Databricks, saiba mais em Pré-requisitos.
O formato de dados do coletor é Parquet, texto delimitado ou Avro com as seguintes configurações e aponta para uma pasta em vez de arquivo.
- Para o formato Parquet , o codec de compressão é nenhum, rápido ou gzip.
- Para o formato de texto delimitado:
rowDelimiter
é qualquer caractere único.compression
pode ser nenhum, bzip2, gzip.encodingName
UTF-7 não é suportado.
- Para o formato Avro, o codec de compressão é nenhum, deflacionado ou rápido.
Na fonte da atividade Copiar,
additionalColumns
não é especificado.Se copiar dados para texto delimitado, no coletor de atividade de cópia,
fileExtension
precisa ser ".csv".No mapeamento de atividade de cópia, a conversão de tipo não está habilitada.
Exemplo:
"activities":[
{
"name": "CopyFromDeltaLake",
"type": "Copy",
"inputs": [
{
"referenceName": "<Delta lake input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "AzureDatabricksDeltaLakeSource",
"sqlReaderQuery": "SELECT * FROM events TIMESTAMP AS OF timestamp_expression"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Cópia encenada do lago delta
Quando o formato ou o armazenamento de dados do coletor não corresponder aos critérios de cópia direta, conforme mencionado na última seção, habilite a cópia em estágios interna usando uma instância de armazenamento provisória do Azure. O recurso de cópia em estágios também oferece uma melhor taxa de transferência. O serviço exporta dados do Azure Databricks Delta Lake para o armazenamento de preparo, copia os dados para o coletor e, finalmente, limpa seus dados temporários do armazenamento de preparo. Consulte Cópia em etapas para obter detalhes sobre como copiar dados usando preparo.
Para usar esse recurso, crie um serviço vinculado de armazenamento de Blob do Azure ou um serviço vinculado do Azure Data Lake Storage Gen2 que se refira à conta de armazenamento como o preparo provisório. Em seguida, especifique as enableStaging
propriedades e stagingSettings
na atividade Copiar.
Nota
A credencial da conta de armazenamento de preparo deve ser pré-configurada na configuração de cluster do Azure Databricks, saiba mais em Pré-requisitos.
Exemplo:
"activities":[
{
"name": "CopyFromDeltaLake",
"type": "Copy",
"inputs": [
{
"referenceName": "<Delta lake input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "AzureDatabricksDeltaLakeSource",
"sqlReaderQuery": "SELECT * FROM events TIMESTAMP AS OF timestamp_expression"
},
"sink": {
"type": "<sink type>"
},
"enableStaging": true,
"stagingSettings": {
"linkedServiceName": {
"referenceName": "MyStagingStorage",
"type": "LinkedServiceReference"
},
"path": "mystagingpath"
}
}
}
]
Lago Delta como pia
Para copiar dados para o Azure Databricks Delta Lake, as seguintes propriedades são suportadas na seção Copiar coletor de atividade.
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type do coletor de atividade Copy, definida como AzureDatabricksDeltaLakeSink. | Sim |
pré-CopyScript | Especifique uma consulta SQL para a atividade Copiar a ser executada antes de gravar dados na tabela delta do Databricks em cada execução. Exemplo: VACUUM eventsTable DRY RUN Você pode usar essa propriedade para limpar os dados pré-carregados ou adicionar uma tabela truncada ou uma instrução Vacuum. |
Não |
importSettings | Configurações avançadas usadas para gravar dados na tabela delta. | Não |
Em importSettings : |
||
tipo | O tipo de comando import, definido como AzureDatabricksDeltaLakeImportCommand. | Sim |
dateFormat | Formatar cadeia de caracteres para tipo de data com um formato de data. Os formatos de data personalizados seguem os formatos no padrão datetime. Se não for especificado, ele usará o valor yyyy-MM-dd padrão . |
Não |
timestampFormat | Formatar cadeia de caracteres para tipo de carimbo de data/hora com um formato de carimbo de data/hora. Os formatos de data personalizados seguem os formatos no padrão datetime. Se não for especificado, ele usará o valor yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] padrão . |
Não |
Cópia direta para o lago delta
Se o armazenamento e o formato de dados de origem atenderem aos critérios descritos nesta seção, você poderá usar a atividade Copiar para copiar diretamente da origem para o Azure Databricks Delta Lake. O serviço verifica as configurações e falha na execução da atividade Copiar se os seguintes critérios não forem atendidos:
O serviço vinculado de origem é o armazenamento de Blob do Azure ou o Azure Data Lake Storage Gen2. A credencial da conta deve ser pré-configurada na configuração de cluster do Azure Databricks, saiba mais em Pré-requisitos.
O formato de dados de origem é Parquet, texto delimitado ou Avro com as seguintes configurações e aponta para uma pasta em vez de arquivo.
- Para o formato Parquet , o codec de compressão é nenhum, rápido ou gzip.
- Para o formato de texto delimitado:
rowDelimiter
é padrão, ou qualquer caractere único.compression
pode ser nenhum, bzip2, gzip.encodingName
UTF-7 não é suportado.
- Para o formato Avro, o codec de compressão é nenhum, deflacionado ou rápido.
Na fonte da atividade Copiar:
wildcardFileName
contém apenas curinga*
, mas não?
, ewildcardFolderName
não é especificado.prefix
,modifiedDateTimeStart
,modifiedDateTimeEnd
, eenablePartitionDiscovery
não são especificados.additionalColumns
não é especificado.
No mapeamento de atividade de cópia, a conversão de tipo não está habilitada.
Exemplo:
"activities":[
{
"name": "CopyToDeltaLake",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Delta lake output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzureDatabricksDeltaLakeSink",
"sqlReaderQuery": "VACUUM eventsTable DRY RUN"
}
}
}
]
Cópia faseada para o lago delta
Quando seu armazenamento ou formato de dados de origem não corresponder aos critérios de cópia direta, conforme mencionado na última seção, habilite a cópia em estágios interna usando uma instância de armazenamento provisória do Azure. O recurso de cópia em estágios também oferece uma melhor taxa de transferência. O serviço converte automaticamente os dados para atender aos requisitos de formato de dados em armazenamento temporário e, em seguida, carrega os dados no delta lake a partir daí. Finalmente, ele limpa seus dados temporários do armazenamento. Consulte Cópia em etapas para obter detalhes sobre como copiar dados usando preparo.
Para usar esse recurso, crie um serviço vinculado de armazenamento de Blob do Azure ou um serviço vinculado do Azure Data Lake Storage Gen2 que se refira à conta de armazenamento como o preparo provisório. Em seguida, especifique as enableStaging
propriedades e stagingSettings
na atividade Copiar.
Nota
A credencial da conta de armazenamento de preparo deve ser pré-configurada na configuração de cluster do Azure Databricks, saiba mais em Pré-requisitos.
Exemplo:
"activities":[
{
"name": "CopyToDeltaLake",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Delta lake output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzureDatabricksDeltaLakeSink"
},
"enableStaging": true,
"stagingSettings": {
"linkedServiceName": {
"referenceName": "MyStagingBlob",
"type": "LinkedServiceReference"
},
"path": "mystagingpath"
}
}
}
]
Monitorização
A mesma experiência de monitoramento de atividade de cópia é fornecida como para outros conectores. Além disso, como o carregamento de dados de/para o delta lake está sendo executado em seu cluster do Azure Databricks, você pode exibir ainda mais logs de cluster detalhados e monitorar o desempenho.
Propriedades da atividade de pesquisa
Para obter mais informações sobre as propriedades, consulte Atividade de pesquisa.
A atividade Pesquisa pode retornar até 1000 linhas, se o conjunto de resultados contiver mais registros, as primeiras 1000 linhas serão retornadas.
Conteúdos relacionados
Para obter uma lista de armazenamentos de dados suportados como fontes e coletores por atividade de cópia, consulte Armazenamentos de dados e formatos suportados.