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
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?