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