Partilhar via


Ingerir dados para um lakehouse do Azure Databricks

O Azure Databricks oferece vários métodos para ingerir dados em uma casa de lago apoiada pelo Delta Lake. Este artigo lista as ferramentas de ingestão suportadas e orientações sobre qual método usar com base em critérios como fonte de dados e latência.

Métodos de ingestão

Você pode ingerir dados no Databricks usando os seguintes métodos:

  • Ingestão em lote de um conjunto de linhas de dados para processamento pouco frequente
  • Ingestão de streaming de linhas de dados individuais ou conjuntos de linhas de dados à medida que chegam para processamento em tempo real

Os dados ingeridos são carregados em tabelas Delta que podem ser usadas nos seus fluxos de dados a jusante e casos de uso de IA. Devido à arquitetura Lakehouse da Databricks, você não precisa duplicar seus dados em casos de uso e pode aproveitar o Unity Catalog para controle de acesso centralizado, auditoria, linhagem e descoberta de dados em todos os seus dados.

Ingestão em lote

Com a ingestão em lote, você carrega dados como conjuntos (ou lotes) de linhas no Databricks, muitas vezes com base em uma programação (por exemplo, todos os dias) ou acionados manualmente. Isso representa a parte de "extração" dos casos de uso tradicionais de extração, transformação e carga (ETL). Você pode usar a ingestão em lote para carregar dados de:

  • Arquivos locais, como CSVs
  • Armazenamento de objetos na nuvem, incluindo Amazon S3, Azure Data Lake Storage e Google Cloud Storage
  • Aplicativos SaaS como Salesforce e bancos de dados como SQL Server

A ingestão em lote suporta uma ampla gama de formatos de fonte de arquivo, incluindo CSV, TSV, JSON, XML, Avro, ORC, Parquet e arquivos de texto.

O Databricks suporta tanto opções tradicionais de ingestão em lote como opções de ingestão em lote incremental. Enquanto a ingestão em lote tradicional processa todos os registros cada vez que é executada, a ingestão incremental em lote deteta automaticamente novos registros na fonte de dados e ignora os registros que já foram ingeridos. Isso significa que menos dados precisam ser processados e, como resultado, os trabalhos de ingestão são executados mais rapidamente e usam os recursos de computação de forma mais eficiente.

Ingestão tradicional (única) de lotes

Você pode carregar arquivos de dados locais ou baixar arquivos de uma URL pública através da interface de adição de dados. Consulte Carregar ficheiros.

Ingestão incremental de lotes

Esta seção descreve as ferramentas de ingestão incremental em lote suportadas.

Tabelas de streaming

O comando CREATE STREAMING TABLE SQL permite carregar dados incrementalmente em tabelas de streaming a partir do armazenamento de objetos na nuvem. Consulte CREATE STREAMING TABLE.

Exemplo: ingestão incremental de lotes usando tabelas de streaming

CREATE OR REFRESH STREAMING TABLE customers
AS SELECT * FROM read_files("/databricks-datasets/retail-org/customers/", "csv")
Conector de armazenamento de objetos na nuvem

O Auto Loader, o conector de armazenamento de objetos na nuvem integrado, permite processar novos arquivos de dados de forma incremental e eficiente à medida que chegam ao Amazon S3 (S3), ao Azure Data Lake Storage Gen 2 (ALDS2) ou ao Google Cloud Storage (GCS). Consulte Carregador Automático.

Exemplo: ingestão incremental de lotes usando o Auto Loader

df = spark.readStream.format("cloudFiles")
  .option("cloudFiles.format", "csv")
  .option("rescuedDataColumn", "_rescued_data")
  .schema("/databricks-datasets/retail-org/customers/schema")
  .load("/databricks-datasets/retail-org/customers/")
Conectores totalmente gerenciados

O Lakeflow Connect fornece conectores totalmente gerenciados para ingerir a partir de aplicativos SaaS, como o Salesforce, e bancos de dados, como o SQL Server. Os conectores gerenciados estão disponíveis usando o seguinte:

  • Interface do usuário do Databricks
  • Databricks CLI
  • Databricks APIs
  • Databricks SDKs
  • Pacotes de ativos Databricks (DABs)

Consulte Lakeflow Connect.

Ingestão de streaming

Com a ingestão de streaming, pode carregar continuamente linhas de dados ou lotes de linhas de dados à medida que são gerados, de modo a poder consultá-los assim que chegam, praticamente em tempo real. Você pode usar a ingestão de streaming para carregar dados de streaming de fontes como Apache Kafka, Amazon Kinesis, Google Pub/Sub e Apache Pulsar.

O Databricks também suporta ingestão de streaming usando conectores integrados. Esses conectores permitem que você processe novos dados de forma incremental e eficiente à medida que eles chegam de fontes de streaming. Consulte Configurar fontes de dados de streaming.

Exemplo: Ingestão de dados em streaming através do Kafka

spark.readStream
    .format("kafka")
    .option("kafka.bootstrap.servers", "<server:ip>")
    .option("subscribe", "topic1")
    .option("startingOffsets", "latest")
    .load()

Ingestão em lote e streaming com DLT

A Databricks recomenda o uso de DLT para criar pipelines de processamento de dados confiáveis e escaláveis. A DLT suporta ingestão em lote e streaming, e você pode ingerir dados de qualquer fonte de dados suportada pelo Auto Loader.

Exemplo: ingestão incremental em lote usando DLT

@dlt.table
def customers():
  return (
    spark.readStream.format("cloudFiles")
      .option("cloudFiles.format", "csv")
      .load("/databricks-datasets/retail-org/customers/")
  )

Exemplo: Ingestão de streaming de Kafka usando DLT

@dlt.table
def kafka_raw():
  return (
    spark.readStream
      .format("kafka")
      .option("kafka.bootstrap.servers", "<server:ip>")
      .option("subscribe", "topic1")
      .option("startingOffsets", "latest")
      .load()
  )

Horários de ingestão

Você pode ingerir dados numa operação pontual, num cronograma recorrente ou continuamente.

  • Para casos de uso de streaming quase em tempo real, use o modo contínuo.
  • Para casos de uso de ingestão em lote, ingira uma vez ou defina um cronograma recorrente.

Consulte a Ingestão com Trabalhos e o modo de pipeline, Acionado versus Contínuo .

Parceiros de ingestão

Muitas ferramentas de terceiros suportam ingestão em lote ou streaming no Databricks. O Databricks valida várias integrações de terceiros, embora as etapas para configurar o acesso a sistemas de origem e ingerir dados variem de acordo com a ferramenta. Consulte parceiros de ingestão para obter uma lista de ferramentas validadas. Alguns parceiros de tecnologia também estão presentes no Databricks Partner Connect, que fornece uma interface do usuário que simplifica a conexão de ferramentas de terceiros aos dados do lakehouse.

incorporação de bricolage

Databricks fornece uma plataforma de computação geral. Como resultado, você pode criar seus próprios conectores de ingestão usando qualquer linguagem de programação suportada pelo Databricks, como Python ou Java. Você também pode importar e aproveitar bibliotecas de conectores de código aberto populares, como a ferramenta de carregamento de dados, Airbyte e Debezium.

Alternativas de ingestão

O Databricks recomenda a ingestão para a maioria dos casos de uso porque é dimensionado para acomodar grandes volumes de dados, consultas de baixa latência e limites de API de terceiros. A ingestão copia dados de seus sistemas de origem para o Azure Databricks, o que resulta em dados duplicados que podem se tornar obsoletos com o tempo. Se não quiser copiar dados, pode utilizar as seguintes ferramentas:

  • Lakehouse Federation permite que você consulte fontes de dados externas sem mover seus dados.
  • Delta Sharing permite que você compartilhe dados com segurança entre plataformas, nuvens e regiões.

No entanto, se você não quiser copiar dados, use Lakehouse Federation ou Delta Sharing.

Quando usar o Delta Sharing

Escolha Compartilhamento Delta para os seguintes cenários:

  • Limitar a duplicação de dados
  • Consultando os dados mais recentes possíveis

Quando usar Lakehouse Federation

Escolha Lakehouse Federation para os seguintes cenários:

  • Relatórios ad hoc ou trabalho de prova de conceito nos seus pipelines de ETL

Considerações ao escolher um método de ingestão

Consideração Orientações
Fonte de dados Se existirem conectores nativos do Lakeflow Connect para a fonte de dados, essa será a maneira mais simples de ingerir dados. Para fontes de dados não suportadas pelo Lakeflow Connect, extraia os dados da fonte e use o Auto Loader para ingerir os dados no Databricks. Para arquivos locais, use a interface do usuário do Databricks para carregar os dados.
Latência Se você quiser analisar dados quase em tempo real, use o streaming para aproveitar o processamento incremental. Com o streaming, os dados ficam disponíveis para consulta assim que cada registro chega. Caso contrário, use a ingestão em lote.
Movimentação de dados Se você não conseguir copiar dados de seus sistemas de origem para o Databricks, use a Lakehouse Federation ou o Delta Sharing.

Migrar dados para o Delta Lake

Para saber como migrar dados existentes para o Delta Lake, consulte Migrar dados para o Delta Lake.

COPY INTO (legado)

O comando CREATE STREAMING TABLE SQL é a alternativa recomendada ao comando COPY INTO SQL herdado para ingestão incremental do armazenamento de objetos na nuvem. Consulte COPY INTO. Para uma experiência de ingestão de arquivos mais escalável e robusta, a Databricks recomenda que os usuários do SQL utilizem as tabelas de streaming em vez de COPY INTO.

Recursos adicionais

Qual é a diferença entre streaming e ingestão incremental em lote?