ゼロバス・インジェスト概要

Zerobus IngestはプッシュベースのストリーミングAPIで、メッセージバスを実行せずにUnityカタログのDeltaテーブルに直接データを高速で書き込むことができます。 多くのチームがプロデューサーとレイクハウスの間に置く中間層を取り除きます。 ワークフローは2段階で構成されます: テーブルを作成し、それにデータをプッシュします。 「hello world」クライアントとペタバイト規模のワークロードは、管理するインフラなしでほぼ同じコードを実行します。

メッセージバスを使った取り込みでは、プロデューサーからのデータはブローカーと取り込みジョブを経てDeltaテーブルに到達します。一方、Zerobus Ingest はプロデューサーをレイクハウスに直接接続します。

Zerobus Ingestはサーバーレスで、負荷の変化に応じて容量を増減します。 24時間以内に1兆件以上のレコードを1つのテーブルに取り込み(「 Incesting the Milky Way: Petabyte-Scale with Zerobus Ingest 」ブログ記事を参照)、数秒で記録を達成しています。

Advantages

Zerobus Ingestは、最大のワークロードにスケールしつつ、インジェストを簡単にします:

  • シンプルなデザイン。 テーブルを作成し、それをプッシュするだけで済みます。管理すべきブローカーやパーティション、パイプラインはありません。 データをテーブルに格納する前にメッセージバスとインジェストジョブを経由させるのではなく、プロデューサーはテーブルに直接書き込むため、経由点も少なく、運用すべき構成要素も少なくなります。
  • サーバーレスで弾力的です。 Zerobus Ingestはデフォルトでオンで、負荷の変化に応じて容量を増減します。 スケールはアプリケーションを書き直すのではなく、プロデューサーを増やすことで行われます。 その方法については、Zerobus Ingest のスケーリングの仕組みをご覧ください。
  • 高スループットのワークロード。 Zerobus Ingestは大規模なインジェストを想定しており、単一のテーブルに高い書き込み速度を維持できます。
  • ほぼリアルタイムの鮮度。 記録は数秒でデルタに届き、到着するとほぼすぐにクエリ対応が整います。
  • 高い同時実行性。 Zerobus Ingestは、数千のクライアントから同じテーブルへの同時書き込みを処理します。

目的地が湖畔の家であれば、Zerobus Ingestが最も直接的なルートです。 他のAzure Databricksツールは、隣接するニーズに合致し、それと良好に連携して動作します:

  • Kafkaを非Lakehouseユーザーをサポートする場合には、Lakehouseで作成されたデータのコピーも必要になるかもしれません。 マネージドストリーミングコネクターを使って再現しましょう。
  • クラウドストレージにファイルとして既に届いたデータはAuto Loaderを使いましょう。
  • 処理経路に秒単位の動作遅延が必要な場合は リアルタイムモードを使いましょう。

テーブルを作成し、その後データをプッシュします

Zerobus Ingestの使用は、テーブルを作成してデータをプッシュするだけで簡単です。 テーブルのスキーマは、各レコードが何を含むべきかを定義します。 まず、ターゲットテーブルを作成します:

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

次に、レコードを取り込むには数行のコードが必要です:

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()

開発で提供する同じコードは本番ワークロードにスケール可能です。 全文の解説については 「Use Zerobus Ingest」をご覧ください。

一般的なユース ケース

  • IoT とデバイス テレメトリ: 大規模な分散フリートからのセンサー、車両、スマートデバイスのデータを、管理された Delta テーブルに直接ストリーミングして取り込みます。
  • オンプレミスからクラウドへ:オンプレミスとハイブリッドシステムをレイクハウスにブリッジし、その間にブローカーインフラを構築せずに済む。 プライベート接続およびファイアウォール設定については、 ネットワークの考慮事項を参照してください。
  • アプリケーションおよびクリックストリームイベント:クラウドやエッジアプリケーションからイベントをプッシュし、ほぼリアルタイムの分析を実現します。
  • 変更データキャプチャ (CDC): 運用システムからの行の変更を Delta に取り込む。
  • 観測データ:OpenTelemetryのトレース、ログ、メトリクスを所有するDeltaテーブルに送信してください。 Zerobus IngestによるOpenTelemetryデータの取り込みを参照してください。

どのように機能するのか

プロデューサーはZerobus Ingestにストリームを開き、レコードをターゲットのDeltaテーブルにプッシュします。 サービスは各レコードをテーブルスキーマに対して検証し、それを耐久性のあるものにします。 レコードが持続性を持つと、Zerobus Ingestは迅速にそれを認識するため、プロデューサーは各レコードを待つことなく送り続けられます。 データはその後すぐに、通常数秒以内にテーブルに物質化されます。 Zerobus Ingestの動的でパーティションレスな設計はインジェストを柔軟にするため、サーバーレス計算はワークロードに合わせてスケールします。

Zerobus Ingestの仕組み:プロデューサーはレコードをZerobus Ingestエンドポイントにプッシュし、そこで検証、耐久性、認識、そしてUnity Catalog Deltaテーブルに具現化します

ストリームやZerobus Ingestのスケールについての詳細な説明については、 Zerobus Ingestの概念を参照してください。 非同期クライアントおよびサーバー通信モデルについては、 非同期通信を参照してください。

データ送信方法

Zerobus Ingestは複数のインターフェースをサポートする1つのエンドポイントであり、各プロデューサーに最適なものを選択できます。

  • gRPC上のSDKは、Python、Java、Rust、Go、TypeScript、そして(ベータ版では)C++およびC# / .NETでの高スループットストリーミングクライアントです。 大量の順序付き取り込みに最適です。 クライアントを作成する を参照してください。
  • REST API:軽量または「チャットが多い」クライアント向けのステートレスインターフェースで、大規模なエッジデバイス群などに対応します。 クライアントを作成する を参照してください。
  • OpenTelemetry (OTLP): 既存のOpenTelemetryコレクタをZerobus Ingestに向けることで、カスタム統合を行うことなく、トレース、ログ、メトリクスを取り込めます。 Zerobus IngestによるOpenTelemetryデータの取り込みを参照してください。
  • Kafka 互換 APIBeta): Azure Databricks SDK を使用せずに、既存の Apache Kafka プロデューサーの送信先を Zerobus Ingest に指定できます。 Zerobus IngestでKafka互換APIを使う方法を参照してください。

Zerobus Ingest スケーリングアーキテクチャ:ソースはプロトコルバッファ(protobuf)、JSON、ArrowレコードをgRPC、REST、OpenTelemetry、Kafka互換API経由で送信し、これらは自動スケーリングとロードバランシングを経て、水平にスケーラブルな状態のないZerobusノードのプールへと流れます。各ノードは書き込み先行ログとLakehouseライターを持ち、LakehouseライターがUnityカタログ管理のDeltaテーブルに一括コミットします

すべてDeltaテーブルに直接書き込みます。 詳細な比較方法や選択方法については 、APIプロトコルをご覧ください。 最初のクライアントを書くには、「 Use Zerobus Ingest」をご覧ください。

費用

Zerobus Ingestの料金は「Automated Serverless」SKUに対して請求されます。 価格は 、Lakeflow Connect の価格ページで入手できます。

使用状況の監視

請求可能使用システムの表を通じて支出を監視できます。 「課金対象使用状況システム参照表」を参照してください。 次の条件を使用して、Zerobus Ingest の使用状況をフィルター処理します。

  • billing_origin_product = 'LAKEFLOW_CONNECT'
  • product_features.lakeflow_connect.zerobus_request_type データの取り込み方法を識別します: 'GRPC' (SDKストリーミング)、 'HTTP' (REST)、 'OTEL_GRPC' および 'OTEL_HTTP' (OpenTelemetry/OTLP)、または 'KAFKA' (Kafka互換API)。

その他のリソース