LoginSignup
0
1

More than 1 year has passed since last update.

#1 Azure Databricks を使ってみよう 【環境準備編】

Last updated at Posted at 2021-10-25

【 Azure Databricks ETL編 その1 】

概要

Azure Databricks を使ってみよう! ということで、以下の3ステップで簡単に說明します。
1. 【環境準備編】:Azure CLI から Azure Databricks 環境を作成します
2. 【抽出変換編】:Databricks から ADLS Gen2 のデータを抽出し、変換します
3. 【格納編】:Databricks で ETL されたデータを ADLS Gen2 に格納します

image.png

今回は 【環境準備編】の說明となります

  • Azure DataLake Storage Gen2
    • ストレージアカウント作成
    • データアップロード用コンテナ作成
    • ETL後のデータ格納用コンテナ作成
  • データの準備
    • Gen2 のデータアップロード用コンテナにローカルにあるファイルをアップロード
  • Azure Databricks
    • workspace作成
    • トークン認証

ローカル環境

  • macOS Big Sur 11.3
  • python 3.8.3
  • Azure CLI 2.28.0

前提条件

  1. Azure環境がすでに用意されていること(テナント/サブスクリプション)。
  2. ローカル環境に「azure cli」がインストールされていること。

事前準備

Azure CLI の機能拡張

## 最新の databricks CLI バージョンを使用する拡張機能をインストールします
$ az extension add -n databricks

## Azure CLI の確認
$ az version
{
  "azure-cli": "2.28.0",
  "azure-cli-core": "2.28.0",
  "azure-cli-telemetry": "1.0.6",
  "extensions": {
    "azure-iot": "0.10.13",
    "databricks": "0.7.3",
    "kusto": "0.3.0",
    "stack-hci": "0.1.4"
  }
}

## databricks-cli のインストール設定
$ pip install databricks-cli

Azure 環境の準備

### ローカル環境変数の定義
export RG_NAME=rg-ituru_bricks01
export SUBS_NAME=PSP2-01
export STORAGE_ACCOUNT=testaccount
export STORAGE_CONTAINER=cost-data
export ETL_CONTAINER=etl-cost-data
export DB_WORKSPACE_NAME=db-ituru_workspace01

## 使用するテナントへのログイン
$ az login --tenant <tenant_id>

## 使用サブスクリプションの定義
$ az account set --subscription $SUBS_NAME

## 使用サブスクリプションの確認(IsDefault=True)
$ az account list --output table

## サブスクリプションのリソースIDを取得
$ SUBS_ID=$(az account show --query "id" --output tsv)

## Azure Data Bricks 用のリソースグループ作成
$ az group create --name $RG_NAME --location japaneast

ローカル環境の作業ディレクトリ

UploadCostData ディレクトリ配下のファイルは、この記事 で取得したAzure使用料金のデータです

## UploadCostData ディレクトリ配下のファイルを今回の対象データとします
$ tree -a                 
.
└── UploadCostData
    ├── UsageCost_NSG-01_20210929_115527.json
    └── UsageCost_iapp-01_20210929_115558.json

環境の構築

Gen2 の Storage Account の作成

## ストレージアカウントの作成
$ az storage account create --name $STORAGE_ACCOUNT --resource-group $RG_NAME -l japaneast --sku Standard_LRS --enable-hierarchical-namespace true

## 使用するコンテナの作成
### データアップロード用
$ az storage container create --name $STORAGE_CONTAINER --account-name $STORAGE_ACCOUNT
### ETL用
$ az storage container create --name $ETL_CONTAINER --account-name $STORAGE_ACCOUNT

## ストレージアカウントの認証情報の取得
$ az storage account keys list --account-name $STORAGE_ACCOUNT --subscription $SUBS_NAME --resource-group $RG_NAME --output table
CreationTime                      KeyName    Permissions    Value
--------------------------------  ---------  -------------  -----------------------------
2021-10-15T20:17:11.969418+00:00  key1       FULL           xxxxxxxxxxxxxxxxxxxxxxxxxxxx
2021-10-15T20:17:11.969418+00:00  key2       FULL           yyyyyyyyyyyyyyyyyyyyyyyyyyyy

Azure Portal で確認すると、以下の表示となっています。
image.png

データのアップロード

## アップロードパス・ディレクトリ から コンテナーにすべてのファイルをアップロードします
$ az storage blob upload-batch --account-name $STORAGE_ACCOUNT -d $STORAGE_CONTAINER -s ./UploadCostData/*.json
Finished[#############################################################]  100.0000%
[
  {
    "Blob": "https://testaccount.blob.core.windows.net/cost-data/UsageCost_iapp-01_20210929_115500.json",
    "Last Modified": "2021-10-24T15:14:35+00:00",
    "Type": "application/json",
    "eTag": "\"0x8D99700FD813F9C\""
  },
  {
    "Blob": "https://testaccount.blob.core.windows.net/cost-data/UsageCost_NSG-01_20210929_115617.json",
    "Last Modified": "2021-10-24T15:14:35+00:00",
    "Type": "application/json",
    "eTag": "\"0x8D99700FD86305B\""
  }
]

## コンテナー内の BLOB を一覧表示する
$ az storage blob list --account-name $STORAGE_ACCOUNT --container-name $STORAGE_CONTAINER --output table
Name                                    Blob Type    Blob Tier    Length    Content Type      Last Modified              Snapshot
--------------------------------------  -----------  -----------  --------  ----------------  -------------------------  ----------
UsageCost_NSG-01_20210929_115617.json   BlockBlob    Hot          14822     application/json  2021-10-24T15:14:35+00:00
UsageCost_iapp-01_20210929_115500.json  BlockBlob    Hot          10807     application/json  2021-10-24T15:14:35+00:00

Azure Data Bricks の作成

14日間無料のトライアル版で構成します

## Azure Databricks Workspace の作成・・・完了まで数分かかります
az databricks workspace create --resource-group $RG_NAME --name $DB_WORKSPACE_NAME --location japaneast --sku trial

## 作成した WorkspaceURL の取得
$ WS_URL=$(az databricks workspace show --resource-group $RG_NAME --name $DB_WORKSPACE_NAME --query "workspaceUrl" --output tsv)
$ echo $WS_URL 
adb-333338888844444.28.azuredatabricks.net

Azure Databricks 個人用アクセストークンを使用して認証する

Azure Portal で上記で作成した Databricks サービスに移動し、「ワークスペースの起動」ボタンを押し、Azure Databricks ポータル画面を表示させます。

GUI からのトークン作成(初回作成は必ずGUIから行なう)

表示された画面の左側にある「Settings」ー「User Settings」を選択します
image.png

新たに表示された画面から「Generate New Token」ボタン押す ⇒ 次の画面で以下の値を設定し「Generate」ボタンを押す

項目
Comment TEST_20211025
Lifetime (days) 14

image.png
image.png

作成されたトークンを環境変数に定義します

$ export TOKEN=dapi44444444333333332222222211111111

CLI からのトークン作成(2個目(2回目)以降はCLIからの作成が可能)

####(トークンに指定する有効期限:36時間(129600秒), 10日間(864000秒), 15日間(1296000秒))
https://docs.microsoft.com/ja-jp/azure/databricks/dev-tools/cli/tokens-cli

$ TOKEN=$(databricks tokens create --lifetime-seconds 1296000 --comment "Test_20211125" | jq .token_value --raw-output)
$ echo $TOKEN 
dapi55555555666666667777777788888888

トークンを使用して認証する

$ export DATABRICKS_AAD_TOKEN=$TOKEN
$ databricks configure --aad-token
Databricks Host (should begin with https://): https://adb-333338888844444.28.azuredatabricks.net

## 認証情報の確認(~/.databrickscfg ファイルを確認)
[DEFAULT]
host = https://adb-333338888844444.28.azuredatabricks.net
token = dapi44444444333333332222222211111111

## 複数の接続プロファイルを定義する場合
$ databricks configure --aad-token --profile 'AUC01'

## 認証情報の確認(~/.databrickscfg ファイルを確認)
[AUC01]
host = https://adb-333338888844444.28.azuredatabricks.net
token = dapi55555555666666667777777788888888

# 動作確認
$ databricks fs ls

Azure Data Bricks リソースのクリーンアップ

## リソースをクリーンアップするには、ワークスペースを削除します
az databricks workspace delete --resource-group $RG_NAME --name $DB_WORKSPACE_NAME

まとめ

Azure CLI と Azure Databricks Portal を使用した環境構築でした、、、

0
1
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
0
1