Mata in data i ett Azure Databricks Lakehouse
Azure Databricks erbjuder olika metoder för att mata in data i ett sjöhus som backas upp av Delta Lake. I den här artikeln visas verktyg för inmatning som stöds och vägledning om vilken metod som ska användas baserat på kriterier som datakälla och svarstid.
inmatningsmetoder
Du kan mata in data i Databricks med hjälp av följande metoder:
- Batch-inmatning av en uppsättning datarader för sällan förekommande bearbetning
- Strömmande datainmatning av enskilda datarader eller uppsättningar av datarader när de tas emot för bearbetning i realtid
Inmatade data läses in i Delta-tabeller som sedan kan användas i dina underordnade data och AI-användningsfall. På grund av Databricks Lakehouse-arkitektur behöver du inte duplicera dina data i olika användningsfall, och du kan använda Unity Catalog för centraliserad åtkomstkontroll, granskning, ursprung och dataidentifiering för alla dina data.
Batch-inmatning
Med batchinmatning laddar du in data som uppsättningar (eller batcher) med rader i Databricks som ofta sker enligt ett schema (till exempel varje dag) eller initieras manuellt. Detta representerar den "extrahera" delen av traditionella användningsfall för extrahering, transformering, inläsning (ETL). Du kan använda batchinmatning för att läsa in data från:
- Lokala filer som CSV:er
- Molnobjektlagring, inklusive Amazon S3, Azure Data Lake Storage och Google Cloud Storage
- SaaS-program som Salesforce och databaser som SQL Server
Batch-inmatning stöder en mängd olika filkällformat, inklusive CSV-, TSV-, JSON-, XML-, Avro-, ORC-, Parquet- och textfiler.
Databricks stöder både traditionell batchinmatning och inkrementell batchinmatning. Medan traditionell batchinmatning bearbetar alla poster varje gång den körs, identifierar inkrementell batchinmatning automatiskt nya poster i datakällan och ignorerar poster som redan har matats in. Det innebär att mindre data behöver bearbetas och därför körs inmatningsjobb snabbare och använder beräkningsresurser mer effektivt.
traditionell engångs-batchinmatning
Du kan ladda upp lokala datafiler eller ladda ned filer från en offentlig URL med hjälp av användargränssnittet för att lägga till data. Se Ladda upp filer.
inkrementell batchinmatning
I det här avsnittet beskrivs inkrementella batchinmatningsverktyg som stöds.
Strömmande tabeller
Med kommandot CREATE STREAMING TABLE
SQL kan du läsa in data stegvis i strömmande tabeller från molnobjektlagring. Se CREATE STREAMING TABLE.
Exempel: Inkrementell batchinmatning med hjälp av strömmande tabeller
CREATE OR REFRESH STREAMING TABLE customers
AS SELECT * FROM read_files("/databricks-datasets/retail-org/customers/", "csv")
Anslutningsmodul för molnobjektlagring
Med Auto Loader, den inbyggda anslutningsappen för molnobjektlagring, kan du stegvis och effektivt bearbeta nya datafiler när de tas emot i Amazon S3 (S3), Azure Data Lake Storage Gen 2 (ALDS2) eller Google Cloud Storage (GCS). Se Auto Loader.
Exempel: Inkrementell batchinmatning med Automatisk Inläsare
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/")
Fullständigt hanterade kontakter
Lakeflow Connect tillhandahåller fullständigt hanterade anslutningsappar för inmatning från SaaS-program som Salesforce och databaser som SQL Server. Hanterade anslutningar är tillgängliga med hjälp av följande:
- Databricks-användargränssnitt
- Databricks CLI
- Databricks-API:er
- Databricks SDK:er
- Databricks-tillgångspaket (DAB)
Se Lakeflow Connect.
inmatning av direktuppspelning
Med strömmande inmatning läser du kontinuerligt in datarader eller batchar med datarader när de genereras så att du kan fråga den när den tas emot nästan i realtid. Du kan använda strömmande inmatning för att läsa in strömmande data från källor som Apache Kafka, Amazon Kinesis, Google Pub/Sub och Apache Pulsar.
Databricks har också stöd för strömmande inmatning med hjälp av inbyggda anslutningar. Dessa kontakter gör att du stegvis och effektivt kan bearbeta ny data i takt med att den anländer från strömmande källor. Se Konfigurera strömmande datakällor.
Exempel: Strömmande inmatning från Kafka
spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "<server:ip>")
.option("subscribe", "topic1")
.option("startingOffsets", "latest")
.load()
Batch och strömningsinmatning med DLT
Databricks rekommenderar att du använder DLT- för att skapa tillförlitliga och skalbara databearbetningspipelines. DLT stöder både batch- och strömningsinmatning, och du kan mata in data från alla datakällor som stöds av Auto Loader.
Exempel: Inkrementell batchinmatning med DLT-
@dlt.table
def customers():
return (
spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.load("/databricks-datasets/retail-org/customers/")
)
Exempel: Strömmande inmatning från Kafka med DLT-
@dlt.table
def kafka_raw():
return (
spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "<server:ip>")
.option("subscribe", "topic1")
.option("startingOffsets", "latest")
.load()
)
inmatningsscheman
Du kan mata in data som en engångsåtgärd, enligt ett återkommande schema eller kontinuerligt.
- För användningsfall för direktuppspelning i nära realtid använder du kontinuerligt läge.
- För användningsfall för batchinmatning matar du in en gång eller anger ett återkommande schema.
Se inmatning med jobb och utlöses jämfört med kontinuerligt pipelineläge.
inmatningspartner
Många verktyg från tredje part stöder batch- eller strömningsinmatning till Databricks. Databricks validerar olika integreringar från tredje part, men stegen för att konfigurera åtkomst till källsystem och mata in data varierar beroende på verktyg. Besök Ingestionspartners för en lista över validerade verktyg. Vissa teknikpartners finns också i Databricks Partner Connect, som tillhandahåller ett användargränssnitt som förenklar anslutning av verktyg från tredje part till lakehouse-data.
DIY-inmatning
Databricks tillhandahåller en allmän beräkningsplattform. Därför kan du skapa egna anslutningsappar för inmatning med valfritt programmeringsspråk som stöds av Databricks, till exempel Python eller Java. Du kan också importera och utnyttja populära bibliotek för anslutningsprogram med öppen källkod, till exempel datainläsningsverktyg, Airbyte och Debezium.
inmatningsalternativ
Databricks rekommenderar inmatning för de flesta användningsfall eftersom det skalar för att hantera stora datavolymer, frågor med låg svarstid och API-gränser från tredje part. Inmatning kopierar data från dina källsystem till Azure Databricks, vilket resulterar i dubbletter av data som kan bli inaktuella över tid. Om du inte vill kopiera data kan du använda följande verktyg:
- Lakehouse Federation låter dig fråga externa datakällor utan att behöva flytta på dina data.
- Delta Sharing gör att du på ett säkert sätt kan dela data mellan plattformar, moln och regioner.
Men om du inte vill kopiera data använder du Lakehouse Federation eller Delta Sharing.
När deltadelning ska användas
Välj Deltadelning för följande scenarier:
- Begränsa dataduplicering
- Att fråga efter de senaste möjliga data
När du ska använda Lakehouse Federation
Välj Lakehouse Federation för följande scenarier:
- Ad hoc-rapportering eller proof-of-concept-arbete för dina ETL-flöden
Överväganden när du väljer en inmatningsmetod
Hänsyn | Vägledning |
---|---|
Datakälla | Om det finns inbyggda Lakeflow Connect-anslutningar för datakällan är detta det enklaste sättet att mata in data. För datakällor som inte stöds av Lakeflow Connect extraherar du data från källan och använder sedan Auto Loader för att mata in data i Databricks. För lokala filer använder du Databricks-användargränssnittet för att ladda upp data. |
Fördröjning | Om du vill analysera data i nära realtid använder du strömning för att utnyttja inkrementell bearbetning. Med streaming är datan tillgänglig för sökfrågor så snart varje post anländer. Använd annars batchinmatning. |
Dataförflyttning | Om du inte kan kopiera data från dina källsystem till Databricks använder du Lakehouse Federation eller Delta Sharing. |
Migrera data till Delta Lake
Information om hur du migrerar befintliga data till Delta Lake finns i Migrera data till Delta Lake.
COPY INTO (äldre)
KOMMANDOT CREATE STREAMING TABLE
SQL är det rekommenderade alternativet till det äldre COPY INTO
SQL-kommandot för inkrementell inmatning från molnobjektlagring. Se COPY INTO. För en mer skalbar och robust filinmatning rekommenderar Databricks att SQL-användare använder strömmande tabeller i stället för COPY INTO
.
Ytterligare resurser
Vad är skillnaden mellan strömning och inkrementell batchinmatning?