入力接続のトラブルシューティングTroubleshoot input connections

この記事では、Azure Stream Analytics の入力接続に関する一般的な問題、入力の問題のトラブルシューティングの方法、および問題を修正する方法について説明します。This article describes common issues with Azure Stream Analytics input connections, how to troubleshoot input issues, and how to correct the issues. 多くのトラブルシューティングの手順では、Stream Analytics ジョブに対してリソース ログを有効にする必要があります。Many troubleshooting steps require resource logs to be enabled for your Stream Analytics job. リソース ログが有効になっていない場合は、「診断ログを使用した Azure Stream Analytics のトラブルシューティング」を参照してください。If you do not have resource logs enabled, see Troubleshoot Azure Stream Analytics by using resource logs.

ジョブによって受信されない入力イベントInput events not received by job

  1. 入力と出力の接続をテストします。Test your input and output connectivity. 各入力と出力の [接続のテスト] ボタンを使用して、入力と出力への接続を確認します。Verify connectivity to inputs and outputs by using the Test Connection button for each input and output.

  2. 入力データを確認します。Examine your input data.

    1. 各入力の [サンプル データ] ボタンを使用します。Use the Sample Data button for each input. 入力のサンプル データをダウンロードします。Download the input sample data.

    2. サンプル データを調べて、スキーマとデータ型を理解します。Inspect the sample data to understand the schema and data types.

    3. イベント ハブのメトリックを確認して、イベントが送信されていることを確認します。Check Event Hub metrics to ensure events are being sent. Event Hubs がメッセージを受信している場合、メッセージ メトリックは 0 より大きい必要があります。Message metrics should be greater than zero if Event Hubs is receiving messages.

  3. 入力プレビューで時間の範囲を選択していることを確認します。Ensure that you have selected a time range in the input preview. [時間範囲の選択] を選択し、クエリをテストする前にサンプル期間を入力します。Choose Select time range, and then enter a sample duration before testing your query.

形式が正しくない入力イベントが原因の逆シリアル化エラーMalformed input events causes deserialization errors

Stream Analytics ジョブの入力ストリームに間違った形式のメッセージが含まれている場合は、逆シリアル化の問題が発生します。Deserialization issues are caused when the input stream of your Stream Analytics job contains malformed messages. たとえば、間違った形式のメッセ―ジは、JSON オブジェクト内でのかっこや中かっこの不足、または時間フィールドでの不正なタイム スタンプ形式によって発生する可能性があります。For example, a malformed message could be caused by a missing parenthesis, or brace, in a JSON object or an incorrect timestamp format in the time field.

Stream Analytics ジョブは、入力から間違った形式のメッセージを受信すると、メッセージを削除し、警告で通知します。When a Stream Analytics job receives a malformed message from an input, it drops the message and notifies you with a warning. 警告記号は、Stream Analytics ジョブの [入力] タイルの上に表示されます。A warning symbol is shown on the Inputs tile of your Stream Analytics job. 次の警告記号は、ジョブが実行状態である限り存在します。The following warning symbol exists as long as the job is in running state:

Azure Stream Analytics の入力タイル

リソース ログを有効にして、エラーの詳細と、エラーの原因となったメッセージ (ペイロード) を表示します。Enable resource logs to view the details of the error and the message (payload) that caused the error. 逆シリアル化エラーが発生する理由は複数あります。There are multiple reasons why deserialization errors can occur. 特定の逆シリアル化エラーの詳細については、「入力データ エラー」を参照してください。For more information regarding specific deserialization errors, see Input data errors. リソース ログが有効になっていない場合は、Azure portal で簡単な通知を利用できます。If resource logs are not enabled, a brief notification will be available in the Azure portal.

入力の詳細の警告通知

メッセージ ペイロードが 32 KB より大きいかバイナリ形式の場合は、GitHub サンプル リポジトリから入手できる CheckMalformedEvents.cs コードを実行します。In cases where the message payload is greater than 32 KB or is in binary format, run the CheckMalformedEvents.cs code available in the GitHub samples repository. このコードは、パーティション ID とオフセットを読み取り、そのオフセットにあるデータを出力します。This code reads the partition ID, offset, and prints the data that's located in that offset.

ジョブがイベント ハブ レシーバーの最大数を超えているJob exceeds maximum Event Hub receivers

Event Hubs を使用する際のベスト プラクティスは、ジョブの拡張性のために複数のコンシューマー グループを使用することです。A best practice for using Event Hubs is to use multiple consumer groups for job scalability. 特定の入力に関する Stream Analytics ジョブのリーダーの数は、1 つのコンシューマー グループ内のリーダーの数に影響します。The number of readers in the Stream Analytics job for a specific input affects the number of readers in a single consumer group. レシーバーの正確な数は、スケールアウト トポロジ ロジックの内部実装の詳細に基づいて決まり、外部には公開されません。The precise number of receivers is based on internal implementation details for the scale-out topology logic and is not exposed externally. リーダーの数は、ジョブの開始時またはジョブのアップグレード中に変更される可能性があります。The number of readers can change when a job is started or during job upgrades.

レシーバー数が最大数を超えると、次のエラー メッセージが表示されます。The following error messages are shown when the number of receivers exceeds the maximum. エラー メッセージには、コンシューマー グループのイベント ハブに対して行われた既存の接続の一覧が含まれています。The error message includes a list of existing connections made to Event Hub under a consumer group. タグ AzureStreamAnalytics は、接続が Azure ストリーミング サービスからのものであることを示します。The tag AzureStreamAnalytics indicates that the connections are from Azure Streaming Service.

The streaming job failed: Stream Analytics job has validation errors: Job will exceed the maximum amount of Event Hub Receivers.

The following information may be helpful in identifying the connected receivers: Exceeded the maximum number of allowed receivers per partition in a consumer group which is 5. List of connected receivers – 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1.

注意

ジョブのアップグレード中にリーダーの数が変更されると、一時的な警告が監査ログに書き込まれます。When the number of readers changes during a job upgrade, transient warnings are written to audit logs. Stream Analytics ジョブは、これらの一時的な問題から自動的に回復します。Stream Analytics jobs automatically recover from these transient issues.

Event Hubs でコンシューマー グループを追加するAdd a consumer group in Event Hubs

Event Hubs インスタンスに新しいコンシューマー グループを追加するには、次の手順に従います。To add a new consumer group in your Event Hubs instance, follow these steps:

  1. Azure portal にサインインします。Sign in to the Azure portal.

  2. Event Hubs のある場所を探します。Locate your Event Hub.

  3. Entities 見出しの部分から Event Hubs を選択します。Select Event Hubs under the Entities heading.

  4. 名前でイベント ハブを選択します。Select the Event Hub by name.

  5. Event Hubs インスタンス ページの Entities 見出しの部分から コンシューマー グループ を選択します。On the Event Hubs Instance page, under the Entities heading, select Consumer groups. $Default という名前のコンシューマー グループが表示されます。A consumer group with name $Default is listed.

  6. [+ コンシューマー グループ] を選択し、新しいコンシューマー グループを追加します。Select + Consumer Group to add a new consumer group.

    Event Hubs でコンシューマー グループを追加する

  7. Stream Analytics ジョブで入力を作成し、イベント ハブをポイントすると、そこにコンシューマー グループを指定したことになります。When you created the input in the Stream Analytics job to point to the Event Hub, you specified the consumer group there. 名前を指定しなかった場合は、 $Default が使用されます。$Default is used when none is specified. コンシューマー グループを新規作成したら、Stream Analytics ジョブで Event Hub 入力を編集し、新しいコンシューマー グループの名前を指定します。Once you create a new consumer group, edit the Event Hub input in the Stream Analytics job and specify the name of the new consumer group.

パーティションあたりのリーダー数が Event Hubs の上限を上回るReaders per partition exceeds Event Hubs limit

ストリーミング クエリ構文で同じ入力 Event Hub リソースが複数回参照されている場合、ジョブ エンジンは、同じコンシューマー グループからクエリ 1 つに複数のリーダーを使用することができます。If your streaming query syntax references the same input Event Hub resource multiple times, the job engine can use multiple readers per query from that same consumer group. 同じコンシューマー グループに対する参照回数が多すぎると、上限の 5 つを超え、エラーになることがあります。When there are too many references to the same consumer group, the job can exceed the limit of five and thrown an error. その場合は、以下で説明するソリューションを使って、複数の入力を複数のコンシューマー グループにまたがらせることで分割することができます。In those circumstances, you can further divide by using multiple inputs across multiple consumer groups using the solution described in the following section.

パーティションあたりのリーダーの数が Event Hubs の上限である 5 つを上回るシナリオとしては、次のものがあります。Scenarios in which the number of readers per partition exceeds the Event Hubs limit of five include the following:

  • 複数の SELECT ステートメント:同じ イベント ハブ入力を参照する複数の SELECT ステートメントを使用する場合、各 SELECT ステートメントによって新しいレシーバーが作成されます。Multiple SELECT statements: If you use multiple SELECT statements that refer to same event hub input, each SELECT statement causes a new receiver to be created.

  • UNION:UNION を使用する場合、同じ イベント ハブとコンシューマー グループを参照する複数の入力を使用できます。UNION: When you use a UNION, it's possible to have multiple inputs that refer to the same event hub and consumer group.

  • SELF JOIN:SELF JOIN 操作を使用する場合、同じ イベント ハブを複数回参照できます。SELF JOIN: When you use a SELF JOIN operation, it's possible to refer to the same event hub multiple times.

次のベスト プラクティスは、パーティションあたりのリーダーの数が 5 つという Event Hubs の制限を超えるシナリオに対処するのに役立ちます。The following best practices can help mitigate scenarios in which the number of readers per partition exceeds the Event Hubs limit of five.

WITH 句を使用してクエリを複数のステップに分割するSplit your query into multiple steps by using a WITH clause

WITH 句を使用すると、クエリ内で FROM によって参照できる一時的な名前付き結果セットを指定できます。The WITH clause specifies a temporary named result set that can be referenced by a FROM clause in the query. WITH 句は、単一の SELECT ステートメントの実行スコープで定義します。You define the WITH clause in the execution scope of a single SELECT statement.

たとえば、次のクエリの代わりに、For example, instead of this query:

SELECT foo 
INTO output1
FROM inputEventHub

SELECT bar
INTO output2
FROM inputEventHub 
…

次のクエリを使用します。Use this query:

WITH data AS (
   SELECT * FROM inputEventHub
)

SELECT foo
INTO output1
FROM data

SELECT bar
INTO output2
FROM data
…

入力が異なるコンシューマー グループにバインドされるようにするEnsure that inputs bind to different consumer groups

3 つ以上の入力が同じ Event Hubs コンシューマー グループに接続されるクエリでは、別のコンシューマー グループを作成します。For queries in which three or more inputs are connected to the same Event Hubs consumer group, create separate consumer groups. そのためには、追加の Stream Analytics 入力を作成する必要があります。This requires the creation of additional Stream Analytics inputs.

コンシューマー グループが異なる個別の入力を作成するCreate separate inputs with different consumer groups

同じイベント ハブに対して、異なるコンシューマー グループを使用して個別の入力を作成できます。You can create separate inputs with different consumer groups for the same Event Hub. 次の UNION クエリは InputOneInputTwo が同じイベント ハブ ソースを参照している例です。The following UNION query is an example where InputOne and InputTwo refer to the same Event Hub source. クエリでは、個別の入力に異なるコンシューマー グループを持たせることができます。Any query can have separate inputs with different consumer groups. UNION クエリは 1 つの例にすぎません。The UNION query is only one example.

WITH 
DataOne AS 
(
SELECT * FROM InputOne 
),

DataTwo AS 
(
SELECT * FROM InputTwo 
),

SELECT foo FROM DataOne
UNION 
SELECT foo FROM DataTwo

パーティションあたりのリーダー数が IoT Hub の上限を上回るReaders per partition exceeds IoT Hub limit

Stream Analytics ジョブでは、IoT Hub に組み込まれたイベント ハブ互換エンドポイントを使用して IoT ハブに接続し、イベントが読み取られます。Stream Analytics jobs use IoT Hub's built-in Event Hub compatible endpoint to connect and read events from IoT Hub. パーティションあたりのリーダー数が IoT Hub の上限を上回る場合は、イベントハブでの解決策を使用して問題を解決できます。If your read per partition exceeds the limits of IoT Hub, you can use the solutions for Event Hub to resolve it. 組み込みエンドポイントのコンシューマー グループは、IoT Hub ポータルのエンドポイント セッションまたは IoT Hub SDK を使用して作成できます。You can create a consumer group for the built-in endpoint through IoT Hub portal endpoint session or through the IoT Hub SDK.

ヘルプの参照Get help

詳細については、Azure Stream Analytics に関する Microsoft Q&A 質問ページを参照してください。For further assistance, try our Microsoft Q&A question page for Azure Stream Analytics.

次のステップNext steps