概要
Azure IoT Hub から Azure Storage にメッセージルーティンした際のエンリッチの値を Databricks で参照する方法を紹介します。Properties
列にて連携されるようです。本記事ではでエンリッチ機能にフォーカスした内容となっており、下記記事内容を前提としています。
メッセージルーティンの実施
デバイスの接続と切断を実施
デバイスの作成と接続文字列の取得
Azure IoT Hub のリソース画面にて、デバイス
タブを選択後、+ デバイス
の追加を選択します。
デバイス ID
に任意の値を入力し、保存
を選択してデバイスを作成します。
作成したデバイスを表示して、プライマリ接続文字列
値をコピーします。
メッセージルーティンの実施
エンリッチの設定を実施
device-to-cloud メッセージ(テレメトリー)の送信
Databricks におけるデータの読み込み
Azure Storage からデータを取得
Azure Storage からデータを取得すると、Properties
列に含まれていることを確認できます。
storage_account = "iothubstorage123"
container = "qiitatest"
abfs_path = f"abfss://{container}@{storage_account}.dfs.core.windows.net/"
abfs_path += "iot-hub-test-0001/*/*/*/*/*/*"
src_df = (
spark.read
.format("avro")
.load(abfs_path)
)
src_df.printSchema()
src_df.display()
src_df.printSchema()
src_df.display()
root
|-- EnqueuedTimeUtc: string (nullable = true)
|-- Properties: map (nullable = true)
| |-- key: string
| |-- value: string (valueContainsNull = true)
|-- SystemProperties: map (nullable = true)
| |-- key: string
| |-- value: string (valueContainsNull = true)
|-- Body: binary (nullable = true)