Ingerir dados em uma lagoa da Databricks

A Databricks oferece vários métodos para ingerir dados em um lakehouse apoiado pelo Delta Lake. Este artigo lista as ferramentas de ingestão compatíveis e orienta sobre qual método usar com base em critérios como fonte de dados e latência.

Métodos de ingestão

O senhor pode ingerir dados no Databricks usando os seguintes métodos:

  • Ingestão de lotes de um conjunto de linhas de dados para processamento infrequente

  • transmissão ingestão 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 tabelasDelta que podem ser usadas em seus dados downstream e casos de uso AI. Graças à arquitetura lakehouse do Databricks, o senhor não precisa duplicar seus dados entre casos de uso e pode aproveitar o Unity Catalog para controle de acesso centralizado, auditoria, linhagem e descobrimento de dados em todos os seus dados.

Ingestão de lotes

Com a ingestão de lotes, o senhor carrega dados como conjuntos (ou lotes) de linhas em Databricks, geralmente 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 extrair, transformar, carregar (ETL). O senhor pode usar a ingestão de lotes para carregar dados:

  • Arquivos locais, como CSVs

  • Armazenamento de objetos em nuvem, incluindo Amazon S3, Azure data lake Storage e Google Cloud Storage

A ingestão de lotes é compatível com uma ampla variedade de formatos de fonte de arquivos, incluindo CSV, TSV, JSON, XML, Avro, ORC, Parquet, e arquivos de texto.

Databricks suporta as opções de ingestão tradicional de lotes e ingestão incremental de lotes. Enquanto a ingestão tradicional de lotes processa todos os registros a cada execução, a ingestão incremental de lotes detecta 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, a execução do trabalho de ingestão é mais rápida e o uso do recurso compute é mais eficiente.

Ingestão tradicional (uma única vez) de lotes

O senhor pode upload arquivos de dados locais ou download arquivos de um URL público usando a interface do usuário para adicionar dados. Consulte Upload de arquivos.

Ingestão incremental de lotes

Esta seção descreve as ferramentas de ingestão de lotes incrementais compatíveis.

tabelas de transmissão

O comando CREATE STREAMING TABLE SQL permite que o senhor carregue dados de forma incremental em tabelas de transmissão a partir do armazenamento de objetos na nuvem. Consulte CREATE STREAMING TABLE.

Exemplo: Ingestão de lotes incrementais usando tabelas de transmissão

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

Auto LoaderO Integrada Cloud Object Storage Connector permite que o senhor processe de forma incremental e eficiente novos arquivos de dados à medida que eles chegam em Amazon S3 (S3), Azure data lake Storage Gen 2 (ALDS2) ou Google Cloud Storage (GCS). Consulte Auto Loader.

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/")

transmissão ingestão

Com a ingestão de transmissão, o senhor carrega continuamente linhas ou lotes de linhas de dados à medida que são gerados, para que possa consultá-los à medida que chegam em tempo quase real. O senhor pode usar a ingestão de transmissão para carregar dados de transmissão de fontes como Apache Kafka, Amazon Kinesis, Google Pub/Sub e Apache Pulsar.

Databricks também suporta a ingestão de transmissão usando conectores integrados. Esses conectores permitem que o senhor processe novos dados de forma incremental e eficiente à medida que eles chegam de fontes de transmissão. Consulte Configurar transmissão fonte de dados.

Exemplo: transmissão de ingestão de Kafka

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

lotes e transmissão de ingestão com Delta Live Tables

Databricks recomenda o uso de Delta Live Tables para criar um pipeline de processamento de dados confiável e dimensionável. Delta Live Tables é compatível com a ingestão de lotes e transmissão, e o senhor pode ingerir dados de qualquer fonte de dados compatível com o site Auto Loader.

Exemplo: Ingestão de lotes incrementais usando Delta Live Tables

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

Exemplo: ingestão de transmissão de Kafka usando Delta Live Tables

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

Programa de ingestão

O senhor pode ingerir dados como uma operação única, em uma programação recorrente ou continuamente.

  • Para casos de uso de transmissão real em tempo próximo, use o modo contínuo.

  • Para muitos casos de uso de ingestão, faça a ingestão uma vez ou defina uma programação recorrente.

Consulte Ingestão com trabalhos e Modo de pipeline acionado vs. contínuo.

Ingestão de parceiros

Muitas ferramentas de terceiros suportam a ingestão de lotes ou transmissão em Databricks. A Databricks valida várias integrações de terceiros, embora as etapas para configurar o acesso aos 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 tecnológicos também são apresentados no Databricks Partner Connectque fornece uma interface de usuário que simplifica a conexão de ferramentas de terceiros aos dados do lakehouse.

Ingestão DIY

Databricks fornece uma plataforma compute geral. Como resultado, o senhor pode criar seus próprios conectores de ingestão usando qualquer linguagem de programação suportada pela Databricks, como Python ou Java. O senhor também pode importar e aproveitar códigos abertos populares de conectores de biblioteca, como o Data Load Tool, o Airbyte e o Debezium.

Alternativas de ingestão

Databricks recomenda a ingestão para a maioria dos casos de uso porque ela se adapta a 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 Databricks, o que resulta em dados duplicados que podem se tornar obsoletos com o tempo. Se não quiser copiar dados, você pode usar as seguintes ferramentas:

  • A lakehouse Federation permite que o senhor consulte fontes de dados externas sem mover seus dados.

  • O Delta Sharing permite que o senhor compartilhe dados com segurança entre plataformas, nuvens e regiões.

No entanto, se o senhor não quiser copiar o uso de dados lakehouse Federation ou Delta Sharing.

Quando usar Delta Sharing

Escolha Delta Sharing para os seguintes cenários:

  • Limitando a duplicação de dados

  • Consultando os dados mais recentes possíveis

Quando usar a Lakehouse Federation

Escolha a Lakehouse Federation para os seguintes cenários:

  • Relatórios ad hoc ou trabalho de prova de conceito em seu pipeline ETL

Migrar dados para o Delta Lake

Para saber como migrar os 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 para o comando COPY INTO SQL legado para ingestão incremental do armazenamento de objetos na nuvem. Consulte COPY INTO. Para uma experiência de ingestão de arquivos mais dimensionável e robusta, o site Databricks recomenda que os usuários do SQL utilizem tabelas de transmissão em vez de COPY INTO.