Azure Stream Analytics からの出力
Azure Stream Analytics ジョブは、入力、クエリ、および出力で構成されます。 変換されたデータを送信できる出力の種類はいくつかあります。 この記事では、サポートされている Stream Analytics の出力の一覧を示します。 Stream Analytics のクエリを自分で作成するときは、INTO 句を使用して出力の名前を指定します。 ジョブごとに 1 つの出力を使用できます。または、必要に応じて、クエリ内に複数の INTO 句を追加することによって、ストリーミング ジョブごとに複数の出力を使用できます。
Stream Analytics ジョブの出力を作成、編集、テストするには、Azure portal、Azure PowerShell、.NET API、REST API、Visual Studio、Visual Studio Code を使用できます。
Note
最良のローカル開発エクスペリエンスを実現するためには、Stream Analytics Tools for Visual Studio Code を使用することを強くお勧めします。 Stream Analytics Tools for Visual Studio 2019 (バージョン 2.6.3000.0) には既知の機能差があり、それは今後改善されません。
次の表に示すように、一部の出力の種類では、パーティション分割がサポートされています。
バッチ処理はすべての出力でサポートされますが、出力バッチ サイズを明示的に設定できるのは一部のみです。 詳細については、「出力バッチ サイズ」セクションを参照してください。
出力の種類 | パーティション分割 | セキュリティ |
---|---|---|
Azure Data Explorer | はい | マネージド ID |
Azure Functions | はい | アクセス キー |
Azure Synapse Analytics | はい | SQL ユーザー認証、 マネージド ID |
Blob Storage と Azure Data Lake Gen 2 | はい | アクセス キー、 マネージド ID |
Azure Cosmos DB | はい | アクセス キー、 マネージド ID |
Azure Data Lake Storage Gen 2 | はい | Microsoft Entra ユーザー マネージド ID |
Azure Event Hubs | はい。出力構成でパーティション キー列を設定する必要があります。 | アクセス キー、 マネージド ID |
Kafka (プレビュー) | はい。出力構成でパーティション キー列を設定する必要があります。 | アクセス キー、 マネージド ID |
Azure Database for PostgreSQL | はい | ユーザー名とパスワード認証 |
Power BI | いいえ | Microsoft Entra ユーザー、 マネージド ID |
Azure Service Bus キュー | はい | アクセス キー、 マネージド ID |
Azure Service Bus トピック | はい | アクセス キー、 マネージド ID |
Azure SQL Database | はい、省略可能です。 | SQL ユーザー認証、 マネージド ID |
Azure Table Storage | はい | アカウント キー |
重要
Azure Stream Analytics では、設計により Insert または Replace API が使用されます。 この操作により、既存のエンティティが置き換えられ、テーブルにエンティティが存在しない場合には新しいエンティティが挿入されます。
パーティション分割
Stream Analytics では、Power BI を除くすべての出力用のパーティションがサポートされています。 パーティション キーと出力ライターの数の詳細については、関心がある特定の出力の種類に関する記事を参照してください。 出力の種類に関する記事は、前のセクションでリンクされています。
また、パーティションの高度なチューニングとして、出力ライターの数は、クエリ内の INTO <partition count>
(INTO に関するページを参照してください) 句を使用して制御することができます。これは、目的のジョブ トポロジを実現するのに役立ちます。 出力アダプターがパーティション分割されていない場合、ある入力パーティションにデータがないと、到着遅延時間までの遅延が発生します。 このような場合は、出力が 1 つのライターにマージされるため、ご使用のパイプラインにボトルネックが発生する可能性があります。 到着遅延ポリシーの詳細については、Azure Stream Analytics のイベントの順序に関する考慮事項に関する記事を参照してください。
出力バッチ サイズ
バッチ処理はすべての出力でサポートされますが、バッチ サイズを明示的に設定できるのは一部のみです。 Azure Stream Analytics では、イベントを処理して出力に書き込むために、可変サイズのバッチを使用します。 通常、Stream Analytics エンジンでは、一度に 1 つのメッセージを書き込むことはせず、効率を上げるためにバッチを使用します。 受信イベントと送信イベントのレートが両方とも高い場合は、Stream Analytics では、大きいバッチを使用します。 エグレス レートが低い場合は、小さいバッチを使用して待ち時間が短い状態を維持します。
Avro と Parquet のファイル分割の動作
Stream Analytics クエリでは、特定の出力に対して複数のスキーマを生成できます。 投影される列とその種類の一覧は、行ごとに変更できます。 設計上、Avro と Parquet の形式では、1 つのファイル内で可変スキーマはサポートしません。
次の形式を使用して、可変スキーマを含むストリームを出力に転送するときに、次の動作が発生する可能性があります。
- スキーマの変更が検出されると、現在の出力ファイルが閉じられ、新しいスキーマで新しい出力ファイルが初期化されます。 このようにファイルを分割すると、スキーマの変更が頻繁に発生する場合、出力の速度が大幅に低下します。 この動作は、ジョブの全体的なパフォーマンスに重大な影響を与えるおそれがあります
- スキーマの変更を検出できない場合、行は拒否される可能性が最も高く、行を出力できないため、ジョブは停止したままになります。 入れ子になった列または複数の型の配列は、検出されず、拒否される状況です。
厳密に型指定された Avro または Parquet 形式、または書き込み時のスキーマを使用する出力を検討し、それらをターゲットとするクエリをそのように (均一スキーマの明示的な変換と投影を) 記述することを強くお勧めします。
複数のスキーマを生成する必要がある場合は、複数の出力を作成し、WHERE
句を使用してレコードを各宛先に分割することを検討してください。
Parquet 出力バッチ処理ウィンドウのプロパティ
Azure Resource Manager テンプレートのデプロイまたは REST API を使用する場合、2 つのバッチ処理ウィンドウ プロパティは次のとおりです。
timeWindow
バッチあたりの最大待機時間。 値は
Timespan
の文字列である必要があります。 たとえば、2 分の場合は00:02:00
になります。 この時間が経過すると、最小行数の要件が満たされていなくても、バッチは出力に書き込まれます。 既定値は 1 分であり、最大許容値は 2 時間です。 BLOB 出力にパス パターンの頻度がある場合は、待機時間をパーティションの時間の範囲より長くすることはできません。sizeWindow
バッチあたりの最小行数。 Parquet の場合、すべてのバッチによって新しいファイルが作成されます。 現在の既定値は 2,000 行であり、最大許容値は 10,000 行です。
これらのバッチ処理ウィンドウ プロパティは、API バージョン 2017-04-01-preview 以降でのみサポートされます。 REST API 呼び出しの JSON ペイロードの例を次に示します。
"type": "stream",
"serialization": {
"type": "Parquet",
"properties": {}
},
"timeWindow": "00:02:00",
"sizeWindow": "2000",
"datasource": {
"type": "Microsoft.Storage/Blob",
"properties": {
"storageAccounts" : [
{
"accountName": "{accountName}",
"accountKey": "{accountKey}",
}
],