Inserire dati in un lakehouse di Azure Databricks
Azure Databricks offre vari metodi per l'inserimento di dati in un lakehouse supportato da Delta Lake. Questo articolo elenca gli strumenti di inserimento supportati e indicazioni su quale metodo usare in base a criteri come l'origine dati e la latenza.
metodi di ingestione
È possibile inserire dati in Databricks usando i metodi seguenti:
- Inserimento batch di un set di righe di dati per l'elaborazione non frequente
- #inserimento in streaming di singole righe di dati o set di righe di dati man mano che arrivano per l'elaborazione in tempo reale
I dati inseriti vengono caricati in tabelle Delta che possono quindi essere usate nei tuoi flussi di dati downstream e nei casi d'uso di IA. A causa dell'architettura Lakehouse di Databricks, non è necessario duplicare i dati in tutti i casi d'uso ed è possibile sfruttare Unity Catalog per il controllo di accesso centralizzato, il controllo, la derivazione e l'individuazione dei dati in tutti i dati.
inserimento batch
Con il caricamento batch, i dati si caricano come set (o batch) di righe in Databricks, spesso secondo una pianificazione (ad esempio, giornaliera) o manualmente. Rappresenta il pezzo di "estrazione" dei casi d'uso tradizionali di estrazione, trasformazione, caricamento (ETL). È possibile usare l'inserimento batch per caricare i dati da:
- File locali come i CSV
- Archiviazione di oggetti cloud, tra cui Amazon S3, Azure Data Lake Storage e Google Cloud Storage
- Applicazioni SaaS come Salesforce e database come SQL Server
L'inserimento batch supporta un'ampia gamma di formati di origine file, tra cui FILE CSV, TSV, JSON, XML, Avro, ORC, Parquet e file di testo.
Databricks supporta sia l'inserimento batch tradizionale che le opzioni di inserimento batch incrementale. Mentre l'inserimento batch tradizionale elabora tutti i record ogni volta che viene eseguito, l'inserimento batch incrementale rileva automaticamente i nuovi record nell'origine dati e ignora i record già inseriti. Ciò significa che è necessario elaborare meno dati e, di conseguenza, i processi di inserimento vengono eseguiti più velocemente e usano le risorse di calcolo in modo più efficiente.
caricamento batch tradizionale (una tantum)
È possibile caricare file di dati locali o scaricare file da un URL pubblico usando l'interfaccia utente aggiungi dati. Vedi Carica file.
inserimento batch incrementale
Questa sezione descrive gli strumenti di inserimento batch incrementali supportati.
Tabelle di streaming
Il comando SQL CREATE STREAMING TABLE
consente di caricare i dati in modo incrementale nelle tabelle di streaming dall'archiviazione di oggetti cloud. Vedi CREATE STREAMING TABLE.
Esempio di : inserimento batch incrementale tramite tabelle di streaming
CREATE OR REFRESH STREAMING TABLE customers
AS SELECT * FROM read_files("/databricks-datasets/retail-org/customers/", "csv")
connettore di archiviazione oggetti cloud
Il caricatore automatico, il connettore di archiviazione oggetti cloud predefinito, consente di elaborare in modo incrementale ed efficiente nuovi file di dati man mano che arrivano in Amazon S3 (S3), Azure Data Lake Storage Gen 2 (ALDS2) o Google Cloud Storage (GCS). Vedi Auto Loader.
Esempio di : un inserimento batch incrementale con del Caricatore Automatico
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/")
connettori completamente gestiti
Lakeflow Connect offre connettori completamente gestiti per l'inserimento da applicazioni SaaS come Salesforce e database come SQL Server. I connettori gestiti sono disponibili usando quanto segue:
- Interfaccia utente Databricks
- Interfaccia a riga di comando di Databricks
- API di Databricks
- SDK di Databricks
- Bundle di asset di Databricks (DAB)
Vedere Lakeflow Connect.
inserimento in streaming
Con l'inserimento in streaming, le righe di dati o i batch di righe di dati vengono caricati continuamente non appena vengono generati, così da poterle interrogare quasi in tempo reale. È possibile utilizzare l'inserimento in streaming per caricare dati di streaming da fonti come Apache Kafka, Amazon Kinesis, Google Pub/Sub e Apache Pulsar.
Databricks supporta anche l'inserimento in streaming usando connettori predefiniti. Questi connettori consentono di elaborare in modo incrementale ed efficiente nuovi dati man mano che arrivano da origini di streaming. Vedere Configurare le origini dati di streaming.
Esempio: inserimento in streaming da Kafka
spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "<server:ip>")
.option("subscribe", "topic1")
.option("startingOffsets", "latest")
.load()
batch e l'inserimento in streaming con DLT
Databricks consiglia di usare DLT per creare pipeline di elaborazione dati affidabili e scalabili. DLT supporta sia l'inserimento batch che l'inserimento in streaming ed è possibile inserire dati da qualsiasi origine dati supportata dal caricatore automatico.
Esempio: inserimento batch incrementale utilizzando DLT
@dlt.table
def customers():
return (
spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.load("/databricks-datasets/retail-org/customers/")
)
esempio di : inserimento in streaming da Kafka tramite DLT
@dlt.table
def kafka_raw():
return (
spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "<server:ip>")
.option("subscribe", "topic1")
.option("startingOffsets", "latest")
.load()
)
pianificazioni di ingestione
È possibile inserire dati come operazione una tantum, in base a una pianificazione ricorrente o in modo continuo.
- Per i casi d'uso di streaming quasi in tempo reale, usare la modalità continua.
- Per i casi d'uso di inserimento batch, effettuare un inserimento unico o impostare una pianificazione periodica.
Vedere inserimento con i processi e attivata e la modalità pipeline continua.
partner di inserimento
Molti strumenti di terze parti supportano l'inserimento in batch o in streaming in Databricks. Databricks convalida varie integrazioni di terze parti, anche se i passaggi per configurare l'accesso ai sistemi di origine e inserire i dati variano in base allo strumento. Per un elenco degli strumenti convalidati, vedere partner di inserimento. Alcuni partner tecnologici sono inoltre presenti in Databricks Partner Connect, che offre un'interfaccia utente che semplifica la connessione di strumenti di terze parti ai dati lakehouse.
acquisizione DIY
Databricks offre una piattaforma di calcolo generale. Di conseguenza, è possibile creare connettori di inserimento personalizzati usando qualsiasi linguaggio di programmazione supportato da Databricks, ad esempio Python o Java. È anche possibile importare e sfruttare le librerie dei connettori open source più diffuse, ad esempio lo strumento di caricamento dei dati, Airbyte e Debezium.
modalità di acquisizione
Databricks consiglia l'inserimento per la maggior parte dei casi d'uso perché ridimensiona per supportare volumi di dati elevati, query a bassa latenza e limiti di API di terze parti. L'inserimento copia i dati dai sistemi di origine in Azure Databricks, che comporta dati duplicati che potrebbero diventare obsoleti nel tempo. Se non si desidera copiare i dati, è possibile usare gli strumenti seguenti:
- Lakehouse Federation consente di eseguire query su origini dati esterne senza spostare i dati.
- Delta Sharing consente di condividere in modo sicuro i dati tra piattaforme, cloud e regioni.
Tuttavia, se non si desidera copiare i dati, usare Lakehouse Federation o Delta Sharing.
Quando usare la condivisione Delta
Scegliere Delta Sharing per gli scenari seguenti:
- Limitazione della duplicazione dei dati
- Esecuzione di query sui dati più aggiornati possibili
Quando usare Lakehouse Federation
Scegliere Lakehouse Federation per gli scenari seguenti:
- La creazione di report ad hoc o il lavoro di prova di concetto sulle pipeline ETL
Considerazioni sulla scelta di un metodo di ingestione
Considerazione | Indicazioni |
---|---|
L'origine dei dati | Se per l'origine dati esistono connettori nativi di Lakeflow Connect, questo sarà il modo più semplice per inserire i dati. Per le origini dati non supportate da Lakeflow Connect, estrarre i dati dall'origine e quindi usare Il caricatore automatico per inserire i dati in Databricks. Per i file locali, usare l'interfaccia utente di Databricks per caricare i dati. |
Latenza | Per analizzare i dati quasi in tempo reale, usare lo streaming per sfruttare l'elaborazione incrementale. Con lo streaming, i dati sono disponibili per l'esecuzione di query non appena arriva ogni record. In caso contrario, usare l'inserimento batch. |
Spostamento dei dati | Se non è possibile copiare dati dai sistemi di origine a Databricks, usare Lakehouse Federation o Delta Sharing. |
Eseguire la migrazione dei dati a Delta Lake
Per informazioni su come eseguire la migrazione dei dati esistenti a Delta Lake, vedere Eseguire la migrazione dei dati a Delta Lake.
COPY INTO (legacy)
Il comando SQL CREATE STREAMING TABLE
è l'alternativa consigliata al comando SQL COPY INTO
legacy per l'inserimento incrementale dall'archiviazione di oggetti cloud. Vedi COPY INTO. Per un'esperienza di inserimento di file più scalabile e affidabile, Databricks consiglia agli utenti di SQL di sfruttare le tabelle di streaming anziché COPY INTO
.
Risorse aggiuntive
Qual è la differenza tra streaming e l'inserimento batch incrementale?