Delen via


Gegevens opnemen in een Azure Databricks Lakehouse

Azure Databricks biedt verschillende methoden voor het opnemen van gegevens in een lakehouse dat wordt ondersteund door Delta Lake. Dit artikel bevat ondersteunde opnamehulpprogramma's en richtlijnen voor welke methode moet worden gebruikt op basis van criteria zoals gegevensbron en latentie.

opnamemethoden

U kunt gegevens opnemen in Databricks met behulp van de volgende methoden:

  • Batch-opname van een set gegevensrijen voor onregelmatige verwerking
  • Streamingverbruik van afzonderlijke gegevensrijen of gegevensrijensets naarmate deze binnenkomen voor real-time verwerking

Opgenomen gegevens worden geladen in Delta-tabellen die vervolgens kunnen worden gebruikt in uw downstream-gegevens en AI-toepassingen. Vanwege de Lakehouse-architectuur van Databricks hoeft u uw gegevens niet te dupliceren in gebruiksscenario's en kunt u Unity Catalog gebruiken voor gecentraliseerd toegangsbeheer, controle, herkomst en gegevensdetectie voor al uw gegevens.

Batch-invoer

Met batchverwerking laadt u gegevens als sets (of batches) van rijen in Databricks, vaak op basis van een schema (bijvoorbeeld elke dag) of handmatig. Dit vertegenwoordigt het "extract"-gedeelte van traditionele ETL-usecases (extract, transform, load). U kunt batchverwerking gebruiken om gegevens te laden uit:

  • Lokale bestanden, zoals CSV's
  • Cloudobjectopslag, waaronder Amazon S3, Azure Data Lake Storage en Google Cloud Storage
  • SaaS-toepassingen zoals Salesforce en databases zoals SQL Server

Batchopname ondersteunt een breed scala aan bestandsindelingen, waaronder CSV-, TSV-, JSON-, XML-, Avro-, ORC-, Parquet- en tekstbestanden.

Databricks ondersteunt zowel traditionele batchopname als incrementele batchopnameopties. Hoewel bij het uitvoeren van traditionele batchopname alle records worden verwerkt, detecteert incrementele batchopname automatisch nieuwe records in de gegevensbron en worden records genegeerd die al zijn opgenomen. Dit betekent dat er minder gegevens moeten worden verwerkt en daardoor opnametaken sneller worden uitgevoerd en rekenresources efficiënter worden gebruikt.

traditionele (eenmalige) batchverwerking

U kunt lokale gegevensbestanden uploaden of bestanden downloaden van een openbare URL met behulp van de gebruikersinterface voor het toevoegen van gegevens. Zie bestanden uploaden .

incrementele batchopname

In deze sectie worden ondersteunde hulpprogramma's voor incrementele batchopname beschreven.

Streamingtabellen

Met de CREATE STREAMING TABLE SQL-opdracht kunt u gegevens incrementeel laden in streamingtabellen vanuit de opslag van cloudobjecten. Zie CREATE STREAMING TABLE.

Voorbeeld: Incrementele batchopname met streamingtabellen

CREATE OR REFRESH STREAMING TABLE customers
AS SELECT * FROM read_files("/databricks-datasets/retail-org/customers/", "csv")
Cloud-connector voor objectopslag

Met automatisch laden, de ingebouwde connector voor cloudobjectopslag, kunt u nieuwe gegevensbestanden stapsgewijs en efficiënt verwerken wanneer ze binnenkomen in Amazon S3 (S3), Azure Data Lake Storage Gen 2 (ALDS2) of Google Cloud Storage (GCS). Zie Autolader.

Voorbeeld: Incrementele batchopname met behulp van 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/")
Volledig beheerde connectors

Lakeflow Connect biedt volledig beheerde connectors voor opname vanuit SaaS-toepassingen zoals Salesforce en databases zoals SQL Server. Beheerde connectors zijn beschikbaar met behulp van het volgende:

  • Databricks-gebruikersinterface
  • Databricks-CLI
  • Databricks API's
  • Databricks SDK's
  • Databricks Asset Bundles (DABs)

Zie Lakeflow Connect.

streaming-verzameling

Met streaming-ingestie laadt u continu gegevensrijen of batches daarvan terwijl deze worden gegenereerd, zodat u het kunt opvragen zodra het bijna in realtime binnenkomt. U kunt streamingopname gebruiken om streaminggegevens te laden uit bronnen zoals Apache Kafka, Amazon Kinesis, Google Pub/Sub en Apache Pulsar.

Databricks biedt ook ondersteuning voor streamingopname met behulp van ingebouwde connectors. Met deze connectors kunt u nieuwe gegevens stapsgewijs en efficiënt verwerken wanneer deze afkomstig zijn van streamingbronnen. Zie Streaminggegevensbronnen configureren.

voorbeeld: Streamingopname van Kafka-

spark.readStream
    .format("kafka")
    .option("kafka.bootstrap.servers", "<server:ip>")
    .option("subscribe", "topic1")
    .option("startingOffsets", "latest")
    .load()

Batch- en streamingverwerking met DLT

Databricks raadt aan om DLT- te gebruiken om betrouwbare en schaalbare pijplijnen voor gegevensverwerking te bouwen. DLT ondersteunt zowel batch- als streamingopname en u kunt gegevens opnemen uit elke gegevensbron die wordt ondersteund door automatisch laden.

Voorbeeld: Incrementele batchverwerking met DLT

@dlt.table
def customers():
  return (
    spark.readStream.format("cloudFiles")
      .option("cloudFiles.format", "csv")
      .load("/databricks-datasets/retail-org/customers/")
  )

Voorbeeld: Streaminginkomst vanuit Kafka via DLT

@dlt.table
def kafka_raw():
  return (
    spark.readStream
      .format("kafka")
      .option("kafka.bootstrap.servers", "<server:ip>")
      .option("subscribe", "topic1")
      .option("startingOffsets", "latest")
      .load()
  )

opnameschema's

U kunt gegevens opnemen als een eenmalige bewerking, volgens een terugkerend schema of continu.

  • Gebruik continue modus voor bijna realtime streaminggebruik.
  • Voor batchopnamegebruiksscenario's neemt u één keer op of stelt u een terugkerend schema in.

Zie opname met taken en geactiveerd versus continue pijplijnmodus.

opnamepartners

Veel hulpprogramma's van derden ondersteunen batch- of streamingopname in Databricks. Databricks valideert verschillende integraties van derden, hoewel de stappen voor het configureren van toegang tot bronsystemen en opnamegegevens per hulpprogramma verschillen. Zie invoerpartners voor een lijst met gevalideerde tools. Sommige technologiepartners zijn ook beschikbaar in Databricks Partner Connect. Dit biedt een gebruikersinterface die het verbinden van hulpprogramma's van derden vereenvoudigt met Lakehouse-gegevens.

DIY-opname

Databricks biedt een algemeen rekenplatform. Als gevolg hiervan kunt u uw eigen opnameconnectors maken met behulp van elke programmeertaal die wordt ondersteund door Databricks, zoals Python of Java. U kunt ook populaire opensource-connectorbibliotheken importeren en gebruiken, zoals het hulpprogramma voor het laden van gegevens, Airbyte en Debezium.

alternatieven voor inname

Databricks raadt de opname aan voor de meeste gebruiksvoorbeelden, omdat deze wordt geschaald voor grote gegevensvolumes, query's met lage latentie en API-limieten van derden. Het opnameproces kopieert gegevens van uw bronsystemen naar Azure Databricks, wat resulteert in dubbele gegevens die na verloop van tijd verouderd kunnen raken. Als u geen gegevens wilt kopiëren, kunt u de volgende hulpprogramma's gebruiken:

  • Lakehouse Federation kunt u externe gegevensbronnen opvragen zonder uw gegevens te verplaatsen.
  • Delta Sharing kunt u gegevens veilig delen tussen platforms, clouds en regio's.

Als u echter geen gegevens wilt kopiëren, gebruikt u Lakehouse Federation of Delta Sharing.

Wanneer u Delta Delen gebruikt

Kies Delta Delen voor de volgende scenario's:

  • Gegevensduplicatie beperken
  • Query's uitvoeren op de meest recente gegevens

Wanneer Lakehouse Federation gebruiken

Kies Lakehouse Federation voor de volgende scenario's:

  • Ad-hocrapportage of proof-of-concept-werk aan uw ETL-pijplijnen

Overwegingen bij het kiezen van een opnamemethode

Overweging Begeleiding
Gegevensbron Als er Lakeflow Connect systeemeigen connectors voor de gegevensbron bestaan, is dit de eenvoudigste manier om gegevens in te voeren. Voor gegevensbronnen die niet worden ondersteund door Lakeflow Connect, extraheert u de gegevens uit de bron en gebruikt u vervolgens Auto Loader om de gegevens op te nemen in Databricks. Gebruik de Databricks-gebruikersinterface om de gegevens te uploaden voor lokale bestanden.
Wachttijd Als u gegevens in bijna realtime wilt analyseren, gebruikt u streaming om incrementele verwerking te gebruiken. Met streaming zijn de gegevens beschikbaar voor het uitvoeren van query's zodra elke record binnenkomt. Gebruik in plaats daarvan batchinvoer.
Gegevensverplaatsing Als u geen gegevens van uw bronsystemen kunt kopiëren naar Databricks, gebruikt u Lakehouse Federation of Delta Sharing.

Gegevens migreren naar Delta Lake

Zie Gegevens migreren naar Delta Lake voor meer informatie over het migreren van bestaande gegevens naar Delta Lake.

COPY INTO (verouderd)

De CREATE STREAMING TABLE SQL-opdracht is het aanbevolen alternatief voor de verouderde COPY INTO SQL-opdracht voor incrementele opname vanuit cloudobjectopslag. Zie COPY INTO. Voor een meer schaalbare en robuuste ervaring voor bestandsopname raadt Databricks aan dat SQL-gebruikers gebruikmaken van streamingtabellen in plaats van COPY INTO.

Aanvullende bronnen

Wat is het verschil tussen streaming en incrementele batchopname?