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. Es entfernt die mittlere Ebene, die viele Teams zwischen ihren Produzenten und dem Lakehouse platzieren. Der Workflow besteht aus zwei Schritten: Eine Tabelle erstellen und dann Daten darauf übertragen. Ein "Hello World"-Client und eine Workload im Petabyte-Maßstab laufen im Grunde mit demselben Code, ohne Infrastruktur zu verwalten.

Bei der Datenaufnahme über einen Message Bus werden Produzenten über einen Broker und einen Ingestionsjob geleitet, bevor sie die Delta-Tabellen erreichen, während Zerobus Ingest Produzenten direkt mit dem Lakehouse verbindet.

Zerobus Ingest ist serverlos und fügt Kapazität hinzu und entfernt, sobald sich die Last ändert. Er hat in weniger als 24 Stunden über 1 Billion Datensätze in eine einzige Tabelle aufgenommen (siehe den Blogbeitrag "Ingesting the Milky Way: Petabyte-Scale with Zerobus Intest ") und setzt Rekorde innerhalb von Sekunden.

Vorteile

Zerobus Ingest hält die Aufnahme einfach, während es auf die größten Workloads skaliert:

  • Einfach gestaltet. Erstellen Sie eine Tabelle und senden Sie dann Daten darauf – es gibt keine Broker, Partitionen oder Pipelines zu verwalten. Anstatt Daten über einen Nachrichtenbus und einen Erfassungsvorgang zu leiten, ehe sie ankommen, schreiben Produzenten direkt in die Tabelle, sodass es weniger Hops und weniger bewegliche Komponenten gibt, die genutzt werden müssen.
  • Serverlos und elastisch. Zerobus Ingest ist standardmäßig aktiviert und erweitert oder entfernt Kapazität, wenn sich die Last ändert. Du skalierst, indem du mehr Produzenten betreibst, nicht indem du deine Anwendung umschreibst. Um zu erfahren, wie das geht, siehe Wie Zerobus Ingest skaliert.
  • Hochdurchsatz-Arbeitslasten. Zerobus Ingest ist für die Datenaufnahme im großen Maßstab konzipiert und unterstützt dauerhaft hohe Schreibraten in eine einzelne Tabelle.
  • Auffrischung in Quasi-Echtzeit. Die Unterlagen landen innerhalb von Sekunden in Delta und sind fast sofort nach Eintreffen abrufbereit.
  • Hohe Parallelität. Zerobus Ingest verarbeitet gleichzeitige Schreibvorgänge von Tausenden von Clients in dieselbe Tabelle.

Wenn dein Ziel das Seehaus ist, ist Zerobus Ingest der direkteste Weg. Andere Azure Databricks-Tools erfüllen benachbarte Bedürfnisse und funktionieren gut mit ihnen:

  • Für Anwendungsfälle, in denen Sie Kafka betreiben, um Nicht-Lakehouse-Kunden zu unterstützen, möchten Sie möglicherweise auch eine Kopie der im Lakehouse erstellten Daten. Verwenden Sie verwaltete Streaming-Konnektoren, um es zu replizieren.
  • Für Daten, die bereits als Dateien in der Cloud gespeichert sind, benutze Auto Loader.
  • Wenn Sie eine Betriebslatenz unter einer Sekunde im Verarbeitungspfad benötigen, nutzen Sie den Echtzeitmodus.

Erstellen Sie eine Tabelle und übertragen Sie dann Daten

Die Verwendung von Zerobus Ingest ist so einfach wie das Erstellen einer Tabelle und das Übertragen der Daten darauf. 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
);

Dann lässt sich ein Datensatz mit nur wenigen Codezeilen einspeisen:

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})
# ingest more records...
stream.close()

Der gleiche Code, den du in der Entwicklung auslieferst, kann auf Produktionsworkloads skalieren. Eine vollständige Anleitung finden Sie unter Use Zerobus Ingest.

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.

So funktioniert es

Ein Produzent verbindet sich mit Zerobus Ingest und sendet Datensätze an eine Ziel-Delta-Tabelle. Der Dienst validiert jeden Datensatz anhand des Tabellenschemas und macht akzeptierte Datensätze dauerhaft. Für Schnittstellen, die Bestätigungen der Persistenz bieten, bestätigt Zerobus Ingest einen Datensatz, sobald dieser persistent gespeichert ist. 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, akzeptierte Datensätze dauerhaft macht, sie bestätigt, wenn die Schnittstelle Dauerhaftigkeitsbestätigungen liefert, und sie 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.

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.
  • MQTT: JSON-Datensätze aus bestehenden MQTT v5-Anwendungen über TLS veröffentlichen. Siehe MQTT mit Zerobus Ingest verwenden.
  • Kafka-kompatible APIs: Richten Sie einen bestehenden Apache Kafka-Producer auf Zerobus Ingest aus, ohne Azure Databricks SDK. Siehe Use Kafka-compatible APIs with Zerobus Ingest.

Das folgende Diagramm zeigt, wie Datensätze aus Quellströmen und APIs durch Auto-Skalierung und Lastverteilung zu einem horizontal skalierbaren Pool zustandsloser Zerobus-Knoten fließen. Jeder Knoten hat ein Write-Ahead-Log und einen Lakehouse-Writer, der Datensätze in eine von Unity Catalog verwaltete Delta-Tabelle batch-commitet. Die Quellbezeichnungen im Diagramm sind repräsentativ. MQTT folgt demselben Weg durch Lastverteilung, dauerhafte Speicherung und Tabellenmaterialisierung.

Zerobus Ingest-Skalierungsarchitektur-Diagramm mit zustandslosen Knoten, die Datensätze aus Quell-APIs in eine Delta-Tabelle batch-committen.

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), 'KAFKA' (Kafka-kompatible APIs) oder 'MQTT' (MQTT).

Weitere Ressourcen