4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

「S3 + Athena」 で実行していたことを 「BLOB + Azure Data Explorer」 で実現してみました

Last updated at Posted at 2021-03-29

STEP-1 : Azure Data Explorer クラスターとデータベースを作成する

概要

AWSの「S3 + Athena」 で実行できること、つまり、S3に保存されているJSON形式等のデータ(以下、JSONデータ)を Athenaで提供されているSQLライクな構文を用いてクエリ実行することによりデータ抽出が可能となっています。同様なことをAzure上の「BLOB + Azure Data Explorer」構成においても可能であることを確認しました。なお、「Web UI」と「Pythonプログラム」の両方で実現しております。

Azure Data Explorer は、ログや利用統計情報データ等のための高速で拡張性に優れたデータ探索サービスです。
Azure Data Explorer を使用するには、最初にクラスターを作成し、そのクラスター内に 1 つまたは複数のデータベースを作成します。
その後、クエリを実行できるように、JSONデータ等をデータベースに取り込み (読み込み) ます。

以下の3つのステップで順次説明します。今回は STEP-1 についてとなります。
STEP-1 : Azure Data Explorer クラスターとデータベースを作成する
STEP-2 : Azure Data Explorer の Web UI でデータベースへのクエリを実行する
STEP-3 : Azure Data Explorer の Python ライブラリを使用してデータベースへのクエリを実行する

ローカル環境

macOS Big Sur 11.1
python 3.8.3
Microsoft Edge 89.0.774.63(Safariでは Azure Data Explorer がうまく動きませんでした)

ローカル上での事前準備

Azure Storega Exploere がインストールされていること。

Azure上での事前準備

今回は、「ストレージアカウント:storageituru」で「BLOBコンテナー:test20210226」を作成し、そこに「ADX2222_test-iot-dummy-2.json」のJSONデータを用意しました。下図は Azure Storage Explorer での確認となります。

image.png

そのJSONデータはこの記事 にある「IoTSample-write.py」で 2222件生成したものとなります。データ構成は以下となります(プログラムの一部抜粋)。

(抜粋)IoTSample-write.py
# ダミーデータ作成のための Faker の使用
Faker = Factory.create
fake = Faker()
fake = Faker("ja_JP")

# IoT機器のダミーセクション(小文字アルファベットを定義)
section = string.ascii_uppercase

# IoT機器で送信JSONデータの作成
def iot_json_data(count, proc):
    iot_items = json.dumps({
        'items': [{
            'id': i,                            # id
            'time': generate_time(),            # データ生成時間
            'proc': proc,                       # データ生成プロセス名
            'section': random.choice(section),  # IoT機器セクション
            'iot_num': fake.zipcode(),          # IoT機器番号
            'iot_state': fake.prefecture(),     # IoT設置場所
            'vol_1': random.uniform(100, 200),  # IoT値−1
            'vol_2': random.uniform(50, 90)     # IoT値−2
            } 
            for i in range(count)
        ]
    }, ensure_ascii=False).encode('utf-8')
    return iot_items

BLOBコンテナーのSAS(Shared Access Signature)の取得

Azure Data Explorer のデータベースの作成で必要となるBLOBコンテナーのSASを事前に取得しておきます。

1. Azure Storage Explorer 画面の左タブで「BLOBコンテナー:test20210226」を選択し、右クリックで、「Shared Access Signatureの取得...」を選択します。

image.png

2.表示された「Shared Access Signature」ダイアログにおいて、「開始時刻」と「有効期限」を設定し、画面の下部にある [作成] を選択します。

image.png

3.表示されたダイアログには、BLOB コンテナーと共に、ストレージリソースへのアクセスに使用できる URL とクエリ文字列が表示されます。 クリップボードにコピーする URL の横にある [コピー] を選択します。この値を後ほど使用します。コピーが完了したら、画面下部の [閉じる] を選択します。

image.png

Azure Data Explorer クラスターの作成

コンピューティング リソースとストレージ リソースの定義済みセットを使って、Azure リソース グループ内に Azure Data Explorer クラスターを作成します。

1.Azureポータルにサインインします。
2.ポータルの左上隅にある [+ リソースの作成] ボタンを選択します。
3.Azure Data Explorer を検索します。
4.[Azure Data Explorer] で、画面の下部にある [作成] を選択します。

image.png

5.次の情報を基本クラスターの詳細として入力します。

image.png

6.[確認と作成] を選択してクラスターの詳細を確認し、 [作成] を選択してクラスターをプロビジョニングします。 プロビジョニングには 約15分 かかりました。 完了後 [リソースに移動] を選択します。

image.png

Azure Data Explorer データベースの作成

1.[概要] タブで [データベースの作成] を選択します。

image.png

2.フォームに次の情報を入力します。入力後、フォーム画面下部の[作成] を選択してデータベースを作成します。

image.png

3.作成にかかる時間は 1 分未満でした。 プロセスが完了すると、クラスターの [概要] タブに表示が戻ります。

image.png

4.[概要] タブで [新しいデータの取り込み] を選択します。「Ingest new data」フォームが表示されます。

image.png

5.そのフォームの「Table」欄には新規に作成するデータベース名を入力します。
6.そのフォームの「Source type」欄では「BLOBコンテナーから」を選択します。
7.そのフォームの「Link to source」欄には、対象となるBLOBコンテナーのSASを入力します(先述の「BLOBコンテナーのSASの取得」の「3」のURLの値)。
8.フォームの入力が完了したら、画面下部の[Edit schema] を選択します。

image.png

9.表示された画面の内容に問題なければ。画面下部の[Start ingestion] を選択します。作成にかかる時間は 1 分未満でした。

image.png
image.png

10.クラスターにデータベースが作成されたことを確認できます。

image.png

Azure Data Explorer データベースで基本コマンドを実行する

問題なくアクセス可能か確認します。

作成したクラスターで [クエリ] を選択します。「.show databases」コマンドを「クエリ ウィンドウ」に入力後、 [実行] を選択します。結果セットには、このクラスター内の唯一のデータベースである 「IoTDummyDatabase」 が表示されます。
image.png

次のステップでは、Azure Data Explorer の Web UI でデータベースへのクエリを実行してみます。

本課題のシリーズ情報

3つのステップ
STEP-1.Azure Data Explorer クラスターとデータベースを作成する
STEP-2.Azure Data Explorer の Web UI でデータベースへのクエリを実行する
STEP-3.Azure Data Explorer の Python ライブラリを使用してデータベースへのクエリを実行する

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?