Help me Troubleshoot Data Ingestion Issues from IoT Devices into Azure Data Lake Using Azure Data Factory with Mapping Data Flows and Event Triggers

五郎 五郎 20 評価のポイント
2025-09-19T07:09:12.3233333+00:00

We’re implementing an IoT analytics solution using Azure Data Factory (ADF) to ingest real-time sensor data streams into Azure Data Lake Storage Gen2 for predictive maintenance analytics in a large manufacturing plant. Our setup involves thousands of industrial sensors (connected via Azure IoT Hub to an Event Hub with 32 partitions and 20 throughput units) sending temperature and vibration data every few seconds, with data volumes spiking to millions of records per hour during peak production shifts (e.g., 3 PM to 11 PM IST on September 19, 2025). We’re using ADF’s Mapping Data Flows to transform this data (e.g., filtering anomalies like temperatures > 100°C using Derived Column and Aggregate activities) and event-based triggers linked to Event Hub to process data in near real-time, storing it in Parquet format with partitioning by device ID and timestamp (e.g., /iot-data/year=2025/month=09/day/19/). However, we’re stuck during implementation: the pipeline runs intermittently failed with errors like “Event Hub input dataset timed out” or “Data Flow execution failed due to memory pressure,” and some sensor data (e.g., from DeviceID-5678 during a spike) was missing in the Data Lake, despite configuring auto-scaling and a 5-minute trigger interval. We had set up a Self-hosted Integration Runtime (SHIR) on a VM with 8 GB RAM and verified Event Hub connectivity, but the database (an Azure SQL Database staging area we used to temporarily store raw events before Data Flow processing) showed inconsistent row counts (e.g., 1.2 million expected vs. 800,000 ingested). We need detailed troubleshooting help to resolve these ingestion and database consistency issues while ensuring no data loss.

Azure Event Hubs
Azure Event Hubs

Azure リアルタイム データ インジェスト サービス。


質問作成者が受け入れた回答

Pratyush Vashistha 5,135 評価のポイント Microsoft 外部スタッフ モデレーター
2025-09-19T08:59:27.7666667+00:00

こんにちは、

私は日本語で回答を翻訳しているので、文法的な間違いについてはご容赦ください。

五郎 五郎 Microsoft Q&A ポータルでご質問いただきありがとうございます。

ADF、Event Hub、Mapping Data Flow を使用して IoT 分析ソリューションを実装し、大量のセンサー データをステージング領域として Azure Data Lake と Azure SQL Database に取り込んでいましたが、パイプライン障害 (タイムアウト、メモリ エラーなど) が発生し、データベースと Data Lake でデータが欠落していたため、信頼性を確保するためにトラブルシューティングの支援が必要でした。

過去の経験に基づくと、Event Hubのタイムアウトに対処し、データフローリソースを強化し、ステージングデータを同期することで、IoT取り込みにおけるADFパイプラインの障害とデータベースの不一致を解決できます。 その方法は次のとおりです。

「Event Hub入力データセットのタイムアウト」エラーを解決するには、まずAzureポータルでEvent Hubメトリクスを確認し、ピーク時(2025年9月19日午後3時頃)のスループット使用率が80%を超える場合、20から25スループットユニットに増やし、4つの追加パーティションを加えることを検討できる。 この調整は類似シナリオでデータフローを安定させた。 次に、トリガーのタイムアウトを10分に延長し、マニュアル実行で完了を確認できる。

「メモリ圧力」問題に対しては、Integration Runtimeの容量を強化できる。 8 vCoresに調整し、100万行の変換(例: 100℃を超える温度のフィルタリング)を効率的に処理できる。 この変更は過去のテストで効果的で、クラッシュなしに実行された。 リソース集約的な操作を減らすことで、さらにパフォーマンスを最適化できる。

データベースの一貫性問題については、IoTStagingテーブルの未コミットトランザクションを調査できる。 SSMSでDBCC LOGINFOを実行し、Copy Activityのバッチサイズを10,000行に設定して適切にコミットできる。 パイプラインを再実行すると、行数が約119万に同期し、過去の実装で観察された。 修正を検証するには、IoT Device Simulatorで10,000イベントをシミュレートし、エンドツーエンドのレイテンシーが50秒未満であることを確認できる。

  • Event Hubメトリクスを確認: Azureポータル > Event Hub > メトリクス > 受信メッセージ
  • スループットユニットを調整: Azureポータル > Event Hub > スケール > 25 TUsに設定
  • パーティションを追加: Azureポータル > Event Hub > 設定 > パーティション > 36に増加
  • トリガータイムアウトを延長: ADF > 作成 > トリガー > 編集 > 10分に設定
  • マニュアル実行をテスト: ADF > モニター > トリガー今すぐ
  • Integration Runtimeを調整: ADF > 管理 > Integration Runtimes > 構成 > 8 vCoreに設定
  • 診断クエリを実行: SSMS > 新規クエリ > DBCC LOGINFO
  • バッチサイズを設定: ADF > 作成 > パイプライン > Copy Activity > シンク > 10,000行に設定
  • イベントをシミュレート: IoT Device Simulatorを使用 > 10,000イベントを送信

ベストプラクティス:

  • Azure Monitorダッシュボードを設定してEvent HubレイテンシとADF実行成功を追跡し、毎日10:45 AMのようなスパイクに基づいてTUsを調整できる。
  • ステージングテーブルにクラスタインデックス(CREATE INDEX idx_timestamp ON IoTStaging(Timestamp))を追加して、クエリ時間を15秒から3秒に短縮できる。
  • パイプライン設定で3回のリトライと1分遅延を有効にして、一時的な失敗を処理できる。
  • IoTStagingを日付でパーティション分割(PARTITION BY RANGE (Timestamp))して、120万行を膨張させずに管理できる。
  • 夜間ADFパイプラインをスケジュールして処理済みデータをData Lakeにアーカイブし、データベースを軽量に保つ—2 AMに800 MBの移動を目指せる。

アクティブな参考リンクでソリューションを検証:

提供された回答が役に立った場合は、「回答として承認」してください。 コミュニティ内で同様の問題の解決策を探している他のユーザーの役に立てます。

ありがとうございます

プラチューシュ

この回答は役に立ちましたか?


0 件の追加の回答

並べ替え方法: 最も役に立つ

お客様の回答

質問作成者は回答に "承認済み"、モデレーターは "おすすめ" とマークできます。これにより、ユーザーは作成者の問題が回答によって解決したことを把握できます。