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
Aplicativos SaaS, como o Salesforce, e bancos de dados, como o SQL Server
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/")
conectores totalmente gerenciados
LakeFlow Connect fornece conectores totalmente gerenciados para a ingestão de aplicativos SaaS como o Salesforce e bancos de dados como SQL Server. Os conectores gerenciar estão disponíveis usando o seguinte:
IU da Databricks
CLI do Databricks
APIs da Databricks
SDKs da Databricks
Databricks Pacotes ativos (DABs)
Consulte LakeFlow Connect.
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.
Considerações ao escolher um método de ingestão
Consideração |
Orientação |
---|---|
Origem de dados |
Se houver 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 compatíveis com LakeFlow Connect, extraia os dados da fonte e, em seguida, use Auto Loader para ingerir os dados em Databricks. Para arquivos locais, use a interface do usuário Databricks para upload os dados. |
Latência |
Se o senhor quiser analisar dados em tempo real, use a transmissão para aproveitar o processamento incremental. Com a transmissão, os dados ficam disponíveis para consulta assim que cada registro chega. Caso contrário, use a ingestão de lotes. |
Movimentação de dados |
Se o senhor não conseguir copiar os dados dos sistemas de origem para Databricks, use a 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
.