Dela via


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?