Azure Data Explorer のデータ インジェスト概要
データ インジェストには、クラスター内のテーブルへのデータの読み込みが含まれます。 Azure Data Explorer は、データの有効性を確保し、必要に応じて形式を変換し、スキーマの照合、編成、インデックス作成、エンコード、圧縮などの操作を実行します。 取り込まれたデータはクエリに使用できます。
Azure Data Explorer は、ストリーミング インジェストまたはキューインジェストを使用して、1 回限りのインジェストまたは継続的インジェスト パイプラインの確立を提供します。 適切なデータインジェストを判断するには、「 一時データ インジェスト と 連続データ インジェストを参照してください。
Note
データは、設定された 再入ポリシーに従ってストレージに保持されます。
1 回限りのデータ インジェスト
1 回限りのインジェストは、履歴データの転送、不足しているデータの入力、プロトタイプ作成とデータ分析の初期段階に役立ちます。 このアプローチにより、継続的なパイプライン コミットメントを必要とせずに、高速なデータ統合が容易になります。
1 回限りデータ インジェストを実行する方法は複数あります。 次のデシジョン ツリーを使用して、ユース ケースに最適なオプションを決定します。
詳細については、関連するドキュメントを参照してください。
コールアウト | 関連ドキュメント |
---|---|
インジェストについては、Azure Data Explorer でサポートされている データ形式を参照してください。 | |
Azure Data Factory パイプラインでサポートされている ファイル形式を参照してください。 | |
既存のストレージ システムからデータをインポートするには、「 履歴データを Azure Data Explorer に取り込む方法を参照してください。 | |
Azure Data Explorer Web UI では、ローカル ファイル、、Azure Storage 、または Azure Storage からデータを取得できます。 | |
Azure Data Factory と統合するには、Azure Data Factory を使用して Azure Data Explorer にデータをコピーする を参照してください。 | |
Kusto クライアント ライブラリ は、C#、Python、Java、JavaScript、TypeScript、Go で使用できます。 データを操作するコードを記述し、Kusto Ingest ライブラリを使用して Azure Data Explorer テーブルにデータを取り込むことができます。 データは、取り込み前にサポートされている形式のいずれかである必要があります。 |
継続的なデータ インジェスト
継続的インジェストは、ライブ データに対する即時の分析情報を要求する状況で優れています。 たとえば、継続的インジェストは、システム、ログおよびイベント データ、リアルタイム分析を監視するのに役立ちます。
継続的なデータ インジェストには、ストリーミング インジェストまたはキューインジェストを使用してインジェスト パイプラインを設定する必要があります。
ストリーミング インジェスト: この方法により、テーブルあたりのデータ セットが少なく、ほぼリアルタイムの待機時間が確保されます。 データはストリーミング ソースからマイクロ バッチで取り込まれた後、最初は行ストアに配置され、列ストアエクステントに転送されます。 詳細については、「 ストリーミング インジェストの構成」を参照してください。
キューインジェスト: この方法は、高いインジェスト スループット用に最適化されています。 データはインジェスト プロパティに基づいてバッチ処理され、小さなバッチがマージされ、高速なクエリ結果用に最適化されます。 既定では、キューに入れられている最大値は 5 分、1,000 項目、または合計サイズ 1 GB です。 キューに登録されたインジェスト コマンドのデータ サイズの制限は 6 GB です。 このメソッドでは、再試行メカニズムを使用して一時的な障害を軽減し、"少なくとも 1 回" のメッセージング セマンティクスに従って、プロセスでメッセージが失われないようにします。 キューに登録されたインジェストの詳細については、「 Ingestion バッチ処理ポリシーを参照してください。
Note
ほとんどのシナリオでは、よりパフォーマンスの高いオプションであるため、キューに入れたインジェストを使用することをお勧めします。
継続的なデータ インジェストを構成するには、複数の方法があります。 次のデシジョン ツリーを使用して、ユース ケースに最適なオプションを決定します。
詳細については、関連するドキュメントを参照してください。
コールアウト | 関連ドキュメント |
---|---|
コネクタの一覧については、 Connectors の概要を参照してください。 | |
Event Hubs データ接続を作成します。 Event Hubs との統合により、調整、再試行、監視、アラートなどのサービスが提供されます。 | |
リアルタイム ストリーミング データ パイプラインを構築するための分散ストリーミング プラットフォームである Apache Kafka からデータを取り込みます。 | |
IoT Hub データ接続を作成します。 IoT Hubs との統合により、調整、再試行、監視、アラートなどのサービスが提供されます。 | |
Event Grid データ接続を作成します。 Event Grid との統合により、調整、再試行、監視、アラートなどのサービスが提供されます。 | |
Apache Spark、Apache Kafka、Azure Cosmos DB、Fluent Bit、Logstash、Open Telemetry、Power Automate、Splunk など、関連するコネクタのガイダンスを参照してください。 詳細については、「 Connectors の概要を参照してください。 | |
Kusto クライアント ライブラリ は、C#、Python、Java、JavaScript、TypeScript、Go で使用できます。 データを操作するコードを記述し、Kusto Ingest ライブラリを使用して Azure Data Explorer テーブルにデータを取り込むことができます。 データは、取り込み前にサポートされている形式のいずれかである必要があります。 |
Note
ストリーミング インジェストは、すべてのインジェスト方法でサポートされているわけではありません。 サポートの詳細については、特定のインジェスト方法のドキュメントを参照してください。
管理コマンドを使用した直接インジェスト
Azure Data Explorer には、データ管理サービスを使用するのではなく、クラスターにデータを直接取り込む次のインジェスト管理コマンドが用意されています。 これらは、運用環境や大量のシナリオではなく、探索とプロトタイプ作成にのみ使用する必要があります。
- インライン インジェスト: .ingest インライン コマンド には、取り込むデータがコマンド テキスト自体の一部として含まれています。 この方法は、即席のテストを目的としたものです。
- クエリからの取り込み: .set、.append、.set-or-append、または .set-or-replace コマンド クエリまたはコマンドの結果として取り込むデータを間接的に指定します。
- ストレージからの取り込み: .ingest into コマンド は、クラスターからアクセスでき、コマンドによって指し示される、Azure Blob Storage などの外部ストレージから取り込むデータを取得します。
Note
障害が発生した場合、インジェストが再度実行され、試行間の待機時間に指数バックオフ方法を使用して最大 48 時間再試行されます。
インジェスト方法を比較する
次の表は、主なインジェスト方法を比較したものです。
インジェスト名 | データの種類 | ファイルの最大サイズ | ストリーミング、キュー、ダイレクト | 最も一般的なシナリオ | 考慮事項 |
---|---|---|---|---|---|
Apache Spark コネクタ | Spark 環境でサポートされているすべての形式 | 無制限 | キュー登録 | 既存のパイプライン、インジェスト前の Spark での前処理、Spark 環境でサポートされるさまざまなソースからの安全な (Spark) ストリーミング パイプラインを迅速に作成する方法。 | Spark クラスターのコストを考慮してください。 バッチ書き込みの場合は、Event Grid の Azure Data Explorer データ接続と比較します。 Spark ストリーミングの場合は、Event Hub のデータ接続と比較します。 |
Azure Data Factory (ADF) | サポートされるデータ形式 | 無制限。 ADF 制限を継承します。 | キューに入ったトリガーまたは ADF トリガーごと | Excel や XML など、サポートされていない形式をサポートし、90 を超えるソースから perm からクラウドに大きなファイルをコピーできます | この方法では、データが取り込まれるまでに比較的時間がかかります。 ADF によるすべてのデータがメモリにアップロードされ、インジェストが開始されます。 |
Event Grid | サポートされるデータ形式 | 非圧縮で 1 GB | キュー登録 | Azure ストレージからの継続的なインジェスト、Azure ストレージ内の外部データ | インジェストは、BLOB の名前変更または BLOB 作成アクションによってトリガーできます |
イベント ハブ | サポートされるデータ形式 | 該当なし | キューに入れ、ストリーミング | メッセージ、イベント | |
データ エクスペリエンスを取得する | *SV、JSON | 非圧縮で 1 GB | キューに入ったインジェストまたは直接インジェスト | 1 回限り、テーブル スキーマの作成、Event Grid による継続的インジェストの定義、コンテナーを使用した一括インジェスト (最大 5,000 の BLOB。履歴のインジェストを使用する場合は制限なし) | |
IoT Hub | サポートされるデータ形式 | 該当なし | キューに入れ、ストリーミング | IoT メッセージ、IoT イベント、IoT プロパティ | |
Kafka コネクタ | Avro、ApacheAvro、JSON、CSV、Parquet、ORC | 無制限。 Java の制限を継承。 | キューに入れ、ストリーミング | 既存のパイプライン、ソースからの大量の使用量。 | ユーザー設定は、複数のプロデューサーまたはコンシューマー サービスの既存の使用、または必要なレベルのサービス管理によって決定できます。 |
Kusto クライアント ライブラリ | サポートされるデータ形式 | 非圧縮で 1 GB | キューに入れ、ストリーミング、ダイレクト | 組織のニーズに合わせて独自のコードを作成する | プログラムによるインジェストは、インジェスト プロセス中および取り込みプロセス後のストレージ トランザクションを最小限に抑えることで、インジェスト コスト (COG) を削減するために最適化されています。 |
LightIngest | サポートされるデータ形式 | 非圧縮で 1 GB | キューに入ったインジェストまたは直接インジェスト | データ移行、調整されたインジェスト タイムスタンプを含む履歴データ、一括インジェスト | 大文字と小文字を区別し、スペースを区別する |
Logic Apps | サポートされるデータ形式 | 非圧縮で 1 GB | キュー登録 | パイプラインの自動化に使用される | |
LogStash | JSON | 無制限。 Java の制限を継承。 | キュー登録 | 既存のパイプラインでは、入力から大量に消費するために、Logstash の成熟したオープンソースの性質を使用します。 | ユーザー設定は、複数のプロデューサーまたはコンシューマー サービスの既存の使用、または必要なレベルのサービス管理によって決定できます。 |
Power Automate | サポートされるデータ形式 | 非圧縮で 1 GB | キュー登録 | フローの一部としてのインジェスト コマンド。 パイプラインの自動化に使用される。 |
その他のコネクタについては、 Connectors の概要を参照してください。
アクセス許可
次の一覧では、さまざまなインジェスト シナリオに必要なアクセス許可について説明します。
- 新しいテーブルを作成するには、少なくともデータベース ユーザーのアクセス許可が必要です。
- スキーマを変更せずに既存のテーブルにデータを取り込むには、少なくとも Database Ingestor のアクセス許可が必要です。
- 既存のテーブルのスキーマを変更するには、少なくともテーブル管理者またはデータベース管理者のアクセス許可が必要です。
詳細については、「Kusto ロールベースのアクセス制御」に関するページを参照してください。
インジェスト プロセス
次の手順では、一般的なインジェスト プロセスの概要を示します。
バッチ処理ポリシーの設定 (省略可能) : データは、 ingestion バッチ処理ポリシーに基づいてバッチ処理されます。 ガイダンスについては、スループットの最適化を参照してください。
保持ポリシーの設定 (省略可能): データベース保持ポリシーがニーズに適していない場合は、テーブル レベルでオーバーライドします。 詳細については、「Retention policy」 (アイテム保持ポリシー) を参照してください。
テーブルの作成: データの取得エクスペリエンスを使用している場合は、インジェスト フローの一部としてテーブルを作成できます。 それ以外の場合は、 Azure Data Explorer Web UI または .create table コマンドを使用して、インジェストする前にテーブルを作成。
スキーマ マッピングの作成: Schema マッピング ソース データ フィールドを変換先テーブルの列にバインドするのに役立ちます。 CSV、JSON、AVRO などの行指向形式や Parquet などの列指向形式など、さまざまな種類のマッピングがサポートされています。 ほとんどのメソッドでは、マッピングをテーブルに 作成することもできます。
更新ポリシーの設定 (省略可能): Parquet、JSON、Avro などの特定のデータ形式を使用すると、取り込み時の変換を簡単に行うことができます。 インジェスト中に複雑な処理を行うには、 update ポリシーを使用します。 このポリシーでは、元のテーブル内の取り込まれたデータに対して抽出と変換が自動的に実行され、変更されたデータが 1 つ以上の変換先テーブルに取り込まれます。
データの取り込み: 任意のインジェスト ツール、コネクタ、または方法を使用してデータを取り込みます。