Zerobus Ingest – Überblick

Zerobus Ingest ist eine push-basierte Streaming-API, die Daten direkt in Unity Catalog Delta-Tabellen in großem Maßstab schreibt, ohne dass der Nachrichtenbus ausgeführt werden muss. Der Workflow besteht aus zwei Schritten: Eine Tabelle erstellen und dann Daten darauf übertragen. Zerobus Ingest beseitigt die Verwaltung von Partitionen, Brokern oder Pipelines. Es ist ein serverloser Endpunkt, der standardmäßig in deinem Arbeitsbereich aktiviert ist und sich skaliert, wenn du mehr Verbindungen öffnest.

Zerobus Ingest ist für hohen Durchsatz und nahezu Echtzeit-Frische ausgelegt, verarbeitet hochvolumige gleichzeitige Schreibvorgänge von Tausenden von Clients in dieselbe Tabelle und bringt Datensätze innerhalb von Sekunden in Delta ab, sodass Ihre Daten fast sofort nach Ankunft abfragebereit sind.

  • Zerobus Ingest ist in ausgewählten Regionen verfügbar. Ihr Arbeitsbereich und Ihre Zieltabelle müssen beide in einer unterstützten Region liegen. Die Liste der unterstützten Regionen finden Sie unter Verfügbarkeit der Datenerfassung.

Entwickelt für hohe Skalierbarkeit

Zerobus Ingest ist für hohe Skalierbarkeit ausgelegt, ohne dass du Kapazitäten planst. Es hat innerhalb von weniger als 24 Stunden über 1 Billion Datensätze in eine einzige Delta-Tabelle aufgenommen und verarbeitet hochvolumige gleichzeitige Schreibaufträge von Tausenden von Kunden, wie im Blogbeitrag Ingesting the Milky Way: Petabyte-Scale with Zerobus Ingest beschrieben. Informationen zu den Standardkontingenten für den Durchsatz finden Sie unter Zerobus Ingest-Kontingente.

Ein "hello world"-Client und eine Workload im petabyte-Maßstab laufen im Grunde denselben Code. Du skalierst, indem du mehr Produzenten betreibst, nicht indem du deine Anwendung umschreibst.

Zerobus Ingest ist serverlos: Es erhöht und entfernt Kapazität, wenn sich die Last ändert. Streams fungieren als dynamische Partitionseinheiten, die der Dienst öffnet, schließt und rotiert, um die Kapazität neu auszubalancieren, wenn sich die Nachfrage verändert.

Um zu erfahren, wie Zerobus Ingest dies erreicht, siehe Wie Zerobus Ingest skaliert.

Kein Nachrichtenbus erforderlich

Viele Teams schalten einen Nachrichtenbus wie Kafka zwischen ihre Datenproduzenten und ihre Tabellen, nur um Daten auf dem Weg in das Lakehouse zu puffern. Das führt zu zusätzlichen Hops, Kosten und Betriebsaufwand: Broker, die dimensioniert werden müssen, Partitionen, die neu ausbalanciert werden müssen und den Consumerverzögerung, die überwacht werden muss. Zerobus Ingest entfernt diese mittlere Schicht, sodass Produzenten direkt in Delta schreiben können.

Beider Erfassung über einen Nachrichtenbus werden Producer über einen Broker und einen Erfassungsauftrag geleitet, bevor die Daten in Delta-Tabellen gelangen, während Zerobus Ingest Producer direkt mit Delta-Tabellen verbindet.

Ein Nachrichtenbus ist immer noch das richtige Werkzeug, wenn dieselben Daten viele Verbraucher außerhalb des Lakehouse versorgen, wenn die Nachrichtenübertragung zwischen Mikrodiensten erforderlich ist oder für die Verteilung von Nachrichten an mehrere Empfänger. In solchen Fällen, wenn Sie diese Daten auch im Lakehouse haben möchten, verwenden Sie die verwalteten Streamingkonnektoren von Azure Databricks, um diese Daten aus dem Nachrichtenbus zu replizieren. Aber wenn das Seehaus das Ziel ist, ist Zerobus Ingest ein einfacherer, direkterer Weg.

So funktioniert es

Ein Producer öffnet einen Datenstrom zu Zerobus Ingest und pusht Datensätze an eine Ziel-Delta-Tabelle. Der Service validiert jeden Datensatz anhand des Tabellenschemas und macht ihn dauerhaft. Sobald ein Datensatz dauerhaft ist, bestätigt Zerobus Ingest ihn schnell, sodass Ihr Producer weiterhin Datensätze senden kann, ohne auf jeden einzelnen warten zu müssen. Die Daten werden kurz darauf in die Tabelle materialisiert, typischerweise innerhalb von Sekunden. Das dynamische, partitionlose Design von Zerobus Ingest macht die Datenaufnahme skalierbar, sodass die serverlose Rechenkapazität entsprechend Ihren Workloads skaliert.

Wie Zerobus Ingest funktioniert: Produzenten senden Datensätze an den Zerobus Ingest-Endpunkt, der sie validiert, dauerhaft macht, bestätigt und in Unity Catalog Delta-Tabellen materialisiert

Für eine ausführlichere Erklärung von Streams und wie Zerobus Ingest skaliert, siehe Zerobus Ingest-Konzepte. Für das asynchrone Client-Server-Kommunikationsmodell siehe Asynchrone Kommunikation.

Erstellen Sie eine Tabelle und übertragen Sie dann Daten

Jede Anwendung, die ein Zerobus Ingest SDK verwenden oder eine unterstützte API (gRPC, REST oder OpenTelemetry) aufrufen kann, kann Daten in eine Delta-Tabelle streamen. Das Schema der Tabelle definiert, was jeder Datensatz enthalten muss. Erstellen Sie zunächst die Zieltabelle:

CREATE TABLE main.default.air_quality (
  device_name STRING,
  temp INT,
  humidity INT
);

Anschließend, nachdem Sie einem Dienstprinzipal Zugriff auf die Tabelle gewährt haben, genügen ein paar Codezeilen, um einen Datensatz zu erfassen:

from zerobus.sdk.sync import ZerobusSdk
from zerobus.sdk.shared import TableProperties

sdk = ZerobusSdk(SERVER_ENDPOINT, DATABRICKS_WORKSPACE_URL)

table_properties = TableProperties("main.default.air_quality")
stream = sdk.create_stream(CLIENT_ID, CLIENT_SECRET, table_properties)

stream.ingest_record_offset({"device_name": "sensor-1", "temp": 22, "humidity": 55})
stream.close()

Derselbe Code, der einen Datensatz aufnimmt, skaliert bis in den Petabyte-Bereich: Sie lassen ihn von mehr Produzenten ausführen. Eine vollständige Anleitung finden Sie unter Use Zerobus Ingest.

Wann sollte man Zerobus Ingest verwenden

Zerobus Ingest verwenden, wenn... Ziehen Sie ein anderes Tool in Betracht, wenn …
Das Seehaus ist das einzige Ziel für Ihre Daten. Man muss dieselben Daten an viele Nicht-Lakehouse-Verbraucher ausbreiten (nutze einen Nachrichtenbus wie Kafka und Streaming-Connectors , um diese Daten ins Lakehouse zu replizieren).
Du möchtest hohen Durchsatz und direkte gleichzeitige Schreibvorgänge in Delta-Tabellen. Du benötigst eine Nachrichtenübermittlung zwischen Microservices (verwende einen Nachrichtenbus).
Aktualität nahezu in Echtzeit (Sekunden) entspricht Ihren Anforderungen. Sie benötigen eine Betriebslatenz von unter einer Sekunde im Verarbeitungspfad (verwenden Sie Echtzeit-Modus-Konzepte).
Du steuerst den Produzenten und kannst Daten an eine API senden. Sie laden aus Dateien, die bereits im Cloud-Speicher abgelegt wurden (verwenden Sie Auto Loader).

Ein Designpunkt zum Planen: Zerobus Ingest garantiert die Sortierung pro Datenstrom, nicht global für alle Datenströme. Wie die Reihenfolge pro Stream funktioniert und wie man darum herum entwirft, siehe Streams.

Häufige Anwendungsfälle

  • IoT- und Gerätetelemetrie: Sensor-, Fahrzeug- und Daten von intelligenten Geräten aus großen, verteilten Flotten direkt in Governance-konforme Delta-Tabellen übertragen.
  • Von On-Premises in die Cloud: On-Premises- und Hybridsysteme mit dem Lakehouse verbinden, ohne dazwischen eine Broker-Infrastruktur bereitstellen zu müssen. Für private Konnektivität und Firewall-Einrichtung siehe Netzwerküberlegungen.
  • Anwendungs- und Clickstream-Ereignisse: Überträgt Ereignisse aus Cloud- und Edge-Anwendungen für Analysen nahezu in Echtzeit.
  • Change Data Capture (CDC): Landezeile wechselt von Betriebssystemen zu Delta.
  • Beobachtbarkeitsdaten: Senden Sie OpenTelemetry-Ablaufverfolgungen, Protokolle und Metriken in Delta-Tabellen, die Ihnen gehören. Siehe OpenTelemetry-Daten mit Zerobus Ingest erfassen.

Möglichkeiten zum Senden von Daten

Zerobus Ingest ist ein Endpunkt, der mehrere Schnittstellen unterstützt, sodass Sie für jeden Produzenten die beste Lösung auswählen können:

  • SDKs über gRPC: Hochdurchsatz-Streaming-Clients in Python, Java, Rust, Go, TypeScript und (in der Beta) C++ und C# / .NET. Am besten für die geordnete Datenerfassung in großem Umfang. Siehe Write a Client.
  • REST API: eine zustandslose Schnittstelle für leichte oder „gesprächige” Clients wie große Bestände von Edge-Geräten. Siehe Write a Client.
  • OpenTelemetry (OTLP): Weist bestehende OpenTelemetry-Collectors bei Zerobus Ingest auf Landeablaufverfolgungen, Protokolle und Metriken ohne benutzerdefinierte Integration hin. Siehe OpenTelemetry-Daten mit Zerobus Ingest erfassen.
  • Kafka-kompatible APIs (Beta): Verweise einen bestehenden Apache Kafka-Hersteller auf Zerobus Ingest, ohne Azure Databricks SDK. Siehe Use Kafka-compatible APIs with Zerobus Ingest.

Zerobus-Ingest-Skalierungsarchitektur: Quellen senden Protocol Buffers (protobuf), JSON und Arrow-Datensätze über die gRPC-, REST-, OpenTelemetry- und Kafka-kompatiblen APIs, die durch Auto-Scaling und Lastverteilung zu einem horizontal skalierbaren Pool zustandsloser Zerobus-Knoten fließen, jeweils mit einem Write-Ahead-Log und einem Lakehouse-Writer, der Datensätze in eine von Unity Catalog verwaltete Delta-Tabelle einschlägt

Alle schreiben direkt in Delta-Tabellen. Für einen vollständigen Vergleich und die Auswahl siehe API-Protokolle. Um Ihren ersten Client zu schreiben, siehe Use Zerobus Ingest.

Kosten

Die Gebühren für Zerobus Ingest werden der SKU „Automated Serverless“ zugeordnet. Die Preise sind auf der Lakeflow Connect-Preisseite verfügbar.

Überwachen der Nutzung

Sie können Ihre Ausgaben über die Systemtabelle der abrechnungsfähigen Nutzung überwachen. Siehe Referenz zur Systemtabelle für abrechnungsfähigen Verbrauch. Filter für Zerobus Ingest-Verwendung mit:

  • billing_origin_product = 'LAKEFLOW_CONNECT'
  • product_features.lakeflow_connect.zerobus_request_type identifiziert, wie die Daten aufgenommen wurden: 'GRPC' (SDK-Streaming), 'HTTP' (REST) 'OTEL_GRPC' und 'OTEL_HTTP' (OpenTelemetry/OTLP) oder 'KAFKA' (Kafka-kompatible APIs).