-
Notifications
You must be signed in to change notification settings - Fork 0
MS_AzureDatabricksTutorial
- 戻る(Azure Databricks)
- Azure Databricksチュートリアル
- Azure DatabricksのNotebook
Azure Databricks のチュートリアル。
-
Azure の無料試用版サブスクリプションは利用不可との事。
-
ただし、Azure の従量課金制サブスクリプションで
Databricks の 14 日間の無料試用版を使用可能。-
無料の Azure アカウントと Azure Databricks ユニット | Microsoft Azure
https://azure.microsoft.com/ja-jp/free/services/databricks/既存のサブスクリプションで試用版を使用する場合、
ワークスペース作成の価格レベルで試用版を選択する。 -
ただし、
-
Databricks ユニットには課金されないが、
-
クラスタの VM には課金されるので注意する。
-
-
補足(課金が二階建てになっている): Azure Databricks の料金は
DBU(Databricks Unit)+ VM 等の Azure リソースの合算である。
試用版で無料になるのは前者だけで、後者(クラスタの VM、
マネージド ディスク、パブリック IP など)は通常どおり課金される。
後述のとおりクラスタは自動終了の設定を入れ、
PoC が終わったらリソース グループごと削除するのが安全である。
-
作成開始の方法
-
ポータルで [リソースの作成] > [分析] > [Azure Databricks] の順に選択
-
若しくは、[Azure Databricks | Microsoft Azure] の
[Already an Azure customer? Get started]を押下。
https://portal.azure.com/#create/Microsoft.Databricks
-
-
値を指定
-
ワークスペース名
mydatabrickswsとか -
サブスクリプション
任意の値 -
リソース グループ
-
DplRGとか - 既定値は、ワークスペース名に、prefix として
databricks-rg-が
付与されたもの。
databricksXXXと入力すると、
databricks-rg-databricksXXX-XXXXになってしまう。
-
-
場所(リージョン)
- データ・パイプライン系は「West US 2」辺りが良いかも。
- リージョン別の Azure 製品 | Microsoft Azure
https://azure.microsoft.com/ja-jp/global-infrastructure/services/?products=databricks
-
価格レベル
試用版を選択できる。 -
Virtual Network
以下の項目は、共に「いいえ」を選択した。- Secure Cluster Connectivity による... デプロイ (パブリック IP なし)
- 自分の仮想ネットワーク (VNet) に... デプロイします
-
移行メモ(誤字): 元ページの「データ・パープライン系」は
「データ・パイプライン系」の誤りと解して修正した。
-
[作成]ボタンを押下
ワークスペースの作成には数分かかる。- 「デプロイが完了しました」が表示されたら、
- [リソースに移動]ボタンを押下する。
- [ワークスペースの起動]ボタンを押下する。
- Databricks のポータル・サイトに移動する。
-
エンドポイントの保護
-
IP アドレス制限
プレミアム・ライセンスが必要 -
FQDN 名
<databricks-instance> = adb-<workspace-id>.<random-number>.azuredatabricks.net -
以下、下記「ツール」の Databricks CLI が必要
-
トークンの設定
$ export DATABRICKS_TOKEN=xxxxxx -
有効化(WSL で)
$ curl -X PATCH https://<databricks-instance>/api/2.0/workspace-conf \ --header "Authorization: Bearer $DATABRICKS_TOKEN" \ -d '{ "enableIpAccessLists": "true" }'
-
付与(WSL で)
$ curl -X POST https://<databricks-instance>/api/2.0/ip-access-lists \ --header "Authorization: Bearer $DATABRICKS_TOKEN" \ -d '{ "label": "office", "list_type": "ALLOW", "ip_addresses": [ "xxx.xxx.xxx.xxx" ] }'
-
-
移行メモ(脱字): 「付与」の
curlの 1 行目末尾に
行継続の\が欠けていたため補った(そのままでは 2 行目以降が
別コマンドとして解釈される)。
-
IaC 化
-
- 現時点でクイック スタート情報なし。
-
-
クイック スタートから、以下のように作成可能。
Connect-AzAccount Set-AzContext -SubscriptionId ... Register-AzResourceProvider -ProviderNamespace Microsoft.Databricks New-AzDatabricksWorkspace -Name [名称] -ResourceGroupName [既存のRG名] -Location [場所(リージョン)] -ManagedResourceGroupName [ManagedRG名] -Sku [sku]
-
参考
・https://opentouryo.osscons.jp/index.php?%E9%83%A8%E4%BC%9A%E3%83%A1%E3%83%A2%EF%BC%882021%E5%B9%B4%EF%BC%89
・https://github.com/OpenTouryoProject/DataPipeline/blob/develop/Batch/AzDatabricks/README.md
-
-
-
参考
- Databricks へのアクセスを IP 制限する - 雲のメモ帳
https://www.cloudnotes.tech/entry/databricks_iprestrict - Azure Databricks 個人用アクセストークンを使用した認証 - Azure Databricks -
Workspace | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/databricks/dev-tools/api/latest/authentication
- Databricks へのアクセスを IP 制限する - 雲のメモ帳
手順に従い Cluster を作成する
-
[New Cluster]を押下
-
入力
- Cluster Name :
mysparkcluster - Cluster Mode : Standard
- Pool : None
- Runtime : 6.4 -> 7.3 LTS
- Autopilot Options
- ☑ Enable autoscaling
- ☑ Terminate after 20 minutes of inactivity
- Worker Type
・Standard_DS3_v2
・Min Workers 2 Max Workers 8
・☑ Spot instances
・Driver Type Same as worker
- Cluster Name :
-
[Create Cluster]ボタンを押下
※ この手順では、クォータ制限の問題は発生しなかった
(発生した場合は下記「参考」を参照)。
-
以下の手順に従い Notebook を作成する。
-
[New Notebook]を押下
-
入力
- Name :
mynotebook - Language : Python
- Cluster :
mysparkcluster
- Name :
-
[Create]ボタンを押下
-
-
Notebook 上でインタラクティブ実行してみる。
-
参考
-
Databricks CLI
ファイル・システムにアクセスしたりする時に使う。-
Python 3.6 以降が必要
-
Python のインストール
(https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Python を参照) -
Databricks CLI のインストール
pip3 を使用してインストール>pip3 install databricks-cli -
インストールの確認
>databricks Usage: databricks [OPTIONS] COMMAND [ARGS]... Options: -v, --version 0.14.3 ... -
Databricks CLI の設定
>databricks configure --token-
ホスト URL の入力
Databricks Host (should begin with https://): https://.....azuredatabricks.net -
トークンの取得

-
-
トークンの入力
Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -
以下のようになる(Token の所は入力が表示されない)。
>databricks configure --token Databricks Host (should begin with https://): https://.....azuredatabricks.net/ Token: >
-
補足(旧 CLI は非推奨):
pip install databricks-cliで入る
レガシー CLI(0.x 系)は非推奨となり、現在は
Go 実装の **Databricks CLI(v0.2xx 以降)**に置き換わっている
(databricks fs cpなどのコマンド体系は概ね維持されている)。
また、個人用アクセス トークン(PAT)より
**OAuth(U2M / M2M)**による認証が推奨されるようになっている。
Notebook のセルに記述可能。
下記「参考」中の「... データの抽出、変換、読み込みを行う」
下記「参考」中の「Event Hubs を使用して... ストリーム配信する」
下記「参考」中の「Azure Databricks を使用したストリーミング データに対する感情分析」
移行メモ(アンカーの重複): 元ページでは上記 3 つの節が
すべて同じアンカー(#qb0fbdbe)を持っていた。
GitHub Wiki では見出しテキストからアンカーが生成されるため、
参照は「下記『参考』中の〜」という形に置き換えた。
Notebook のセルに記述可能。
(PySpark の一般的な説明は
https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?PySpark を参照)
- 下記「参考」中のクイック スタート。
- Docs の説明が雑なので以下、注釈を加えてみる。
-
CSV や TSV ファイルのような行指向ファイル形式
に対し効率的で高性能な列指向ストレージ形式。 -
ダウンロード先がイマイチ不明なので、以下から取得する。
https://github.com/Teradata/kylo/tree/master/samples/sample-data/parquet -
先ずは、Jupyter Notebookでローカルから読込。
-
読込
parquet_df = spark.read.parquet("path/to/userdata1.parquet")
-
表示
parquet_df.show()
-
結果
+-------------------+---+----------+---------+--------------------+------+---------------+-------------------+--------------------+----------+---------+--------------------+--------------------+ | registration_dttm| id|first_name|last_name| email|gender| ip_address| cc| country| birthdate| salary| title| comments| +-------------------+---+----------+---------+--------------------+------+---------------+-------------------+--------------------+----------+---------+--------------------+--------------------+ |2016-02-03 16:55:29| 1| Amanda| Jordan| ajordan0@com.com|Female| 1.197.201.2| 6759521864920116| Indonesia| 3/8/1971| 49756.53| Internal Auditor| 1E+02| ...
-
-
一応、Spark SQL を実行してみる。
-
Spark SQL
parquet_df.createOrReplaceTempView('source') parquet_df = spark.sql('SELECT * FROM source LIMIT 10')
-
表示
print('Displaying top 10 rows: ') parquet_df.show()
-
結果
上記が 10 行に絞られた結果
-
Azure ストレージへアクセス
その次に、Azure ストレージから読込んでみる。
-
上記の Parquet ファイルを Azure ストレージに配置
-
Azure ストレージ作成のスクリプトは
https://opentouryo.osscons.jp/index.php?%E9%83%A8%E4%BC%9A%E3%83%A1%E3%83%A2%EF%BC%882021%E5%B9%B4%EF%BC%89 - Parquet ファイルはポータルからアップロード可能
-
Azure ストレージ作成のスクリプトは
-
Jupyter Notebook上の PySpark から読込んでみる。
-
実行
from pyspark.sql import SparkSession spark: SparkSession = SparkSession.builder.appName("SimpleApp").getOrCreate() blob_account_name = "osscjpdevinfra" blob_container_name = "container1" blob_relative_path = "userdata1.parquet" blob_sas_token = r"?st=xxxxxxxxxxxxxxxxxxxx" wasbs_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, blob_relative_path) spark.conf.set('fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name), blob_sas_token) print('Remote blob path: ' + wasbs_path) parquet_df = spark.read.parquet(wasbs_path) parquet_df.show()
-
結果
ライブラリが足りないもよう。Class org.apache.hadoop.fs.azure.NativeAzureFileSystem$Secure not found
-
補足(原因と現在の書き方): このエラーは、ローカルの Spark に
hadoop-azureとazure-storageの JAR が入っていないために起きる
(Databricks のクラスタには最初から入っているので、
次項のとおり Databricks 上では動く)。
なおwasbs://は
.NET for Apache Sparkのデータ接続でも
触れたとおり非推奨で、現在は
**abfss://(Azure Data Lake Storage Gen2)**を使う。
認証も SAS トークンではなく、Unity Catalog の
ストレージ資格情報やマネージド ID を使うのが現在の作法である。
Azure Databricks上で実行
ライブラリが足りないので、Azure Databricks上で実行してみる。
-
前提
- ワークスペースの作成(作成のスクリプトは上記「ワークスペース」)
- クラスタの作成(作成の手順は上記「クラスタ」)
- Notebook の作成(作成の手順は上記「Notebook」)
-
先程のコードを実行する。
-
Cluster を開始する。
-
左上のドロップダウン・リストから作成した Cluster を選択し、
-
そこから [Start Cluster]を選択して押下する。
-
-
(先程の)コードをセルに貼り付ける。
-
Shift + Enter キーを使用してコードを実行
-
無事、実行されたことを確認したら
以下のようにコードを変更して再実行する。-
変更前
parquet_df.show()
-
変更後
display(parquet_df)
-
-
データの視覚的な表現を作成する。
displayで表示された形式の出力の一番下から、
[Plot Options]をクリックし、以下のようにする。
-
Cluster を停止する。
- Cluster を開始した際に使ったドロップダウン・リストから
Cluster 管理画面へ飛ぶ。 - Cluster 管理画面で、Terminate or Delete を選択する。
- 課金がアレなので、
・PoC ならリソース・グループごと削除しておいた方が良い。
・と言うのも、リソース・グループを見ると Cluster のリソースが大量に。
- Cluster を開始した際に使ったドロップダウン・リストから
-
上記「Docs のクイック スタート」も終わったので、
PySpark チュートリアル
(https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?PySpark )を、
Azure Databricks で動かしてみる。
- on Jupyter Notebook on Docker
- DataFrame に対する様々な操作
下記「参考 > databricks.com」の Apache Spark チュートリアル(ストリーミング)を、
Azure Databricks で動かしてみる。
作成のスクリプトは以下
- 送信:なし
- 受信:上記「ワークスペース」
readStream で inputPath を maxFilesPerTrigger で読む... みたいな感じになる。
from pyspark.sql.functions import *
# Similar to definition of staticInputDF above, just using `readStream` instead of `read`
streamingInputDF = (
spark
.readStream
.schema(jsonSchema) # Set the schema of the JSON data
.option("maxFilesPerTrigger", 1) # Treat a sequence of files as a stream by picking one file at a time
.json(inputPath)
)
# Same query as staticInputDF
streamingCountsDF = (
streamingInputDF
.groupBy(
streamingInputDF.action,
window(streamingInputDF.time, "1 hour"))
.count()
)インタラクティブにやる場合、
-
in-memory テーブルに名前を付け、
query = ( streamingCountsDF .writeStream .format("memory") # memory = store in-memory table .queryName("counts") # counts = name of the in-memory table .outputMode("complete") # complete = all the counts should be in the table .start() )
-
「
%sql」のマジックコマンドでセレクトする。%sql select action, date_format(window.end, "MMM-dd HH:mm") as time, count from counts order by time, action
みたいな方法になる。
EventHubs の Kafkaと構造化ストリーミング
PySpark チュートリアル中の構造化ストリーミングの入力の Kafka 化ができなかった
(コンテナの Jupyter Notebook からコンテナの Kafka に接続できなかった)ので、
Azure Databricks でリトライ。
作成のスクリプトは以下
- 送信:Azure Event Hubs
- 受信:上記「ワークスペース」
-
Azure Databricks で受信する。
-
上記「Azure Databricks 上で実行」の要領で Cluster・Notebook を作成する。
-
PySpark チュートリアル中の構造化ストリーミングの
入力部分を Kafka 化したスクリプトを以下に書き出す。- ただし、Event Hubs の Kafka エンドポイント風に書く。
- パラメタは
純正クライアントを使用した受信処理を参考にする。
(詳細不明だが、eh_saslの先頭にkafkashadedと言う文字列が必要)
import sys from pyspark.sql import SparkSession from pyspark.sql.functions import explode from pyspark.sql.functions import split from pyspark.sql.functions import window bootstrapServers = "<eventhubsNameSpace>.servicebus.windows.net:9093" eh_sasl = 'kafkashaded.org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="<primaryConnectionString>";' windowSize = 10 slideSize = 10 if slideSize > windowSize: print("<slideSize> must be less than or equal to <windowSize>", file=sys.stderr) windowDuration = '{} seconds'.format(windowSize) slideDuration = '{} seconds'.format(slideSize) spark = SparkSession\ .builder\ .appName("StructuredNetworkWordCountWindowed")\ .getOrCreate() # Create DataFrame representing the stream of input lines from kafka lines = spark \ .readStream \ .format("kafka") \ .option("kafka.bootstrap.servers", bootstrapServers) \ .option("subscribe", "test_topic") \ .option("kafka.sasl.mechanism", "PLAIN") \ .option("kafka.security.protocol", "SASL_SSL") \ .option("kafka.sasl.jaas.config", eh_sasl) \ .load() # Split the lines into words, retaining timestamps # split() splits each line into an array, and explode() turns the array into multiple rows words = lines.select( explode(split(lines.value, ' ')).alias('word'), lines.timestamp ) # Group the data by window and word and compute the count of each group windowedCounts = words.groupBy( window(words.timestamp, windowDuration, slideDuration), words.word ).count().orderBy('window') # Start running the query that prints the windowed word counts to the console query = windowedCounts\ .writeStream\ .outputMode('complete')\ .format('console')\ .start() query.awaitTermination()
-
補足(
kafkashadedが必要な理由): 「詳細不明だが」と留保されている
kafkashaded.のプレフィックスは、Databricks Runtime が
Kafka クライアントのクラスを shade(パッケージ名を書き換えて再配置)
しているためである。
kafka.sasl.jaas.configの値はクラス名を文字列で指定するので、
shade 後の実際のパッケージ名を書かないとクラスが見つからない。
Databricks 以外の素の Spark ではorg.apache.kafka...のままで良い。
-
構造化ストリーミングでは(?)、
console への出力が確認できなかったので、
インタラクティブにやる場合、-
最後を、以下のように変更し、
(in-memory テーブルに名前つけて)# Start running the query that prints the windowed word counts to the console query = windowedCounts\ .writeStream\ .format("memory")\ .queryName("counts")\ .outputMode("complete")\ .start() # query.awaitTermination()
-
%sqlのマジックコマンドでセレクトする。%sql select * from counts
-
補足(console に出ない理由): Notebook では
format("console")の出力はドライバの標準出力に流れるため、
セルの結果としては表示されない
(クラスタのドライバ ログを見れば出ている)。
format("memory")+%sqlに切り替えるという元ページの対処は正しい。
なお Databricks では、display(streamingDF)を使うと
ストリームの結果をそのままセル上で可視化できる。
下記「参考 > Qiita」を参照。
下記「参考」中の「... ノートブックから... SQL Server Linux Docker コンテナーの
クエリを実行する」
ちょっと古いのか?アカンやつ。
下記「参考」中の「Azure Databricks を使ってみた」
... ちと古いし、他にも色々アレなので、パス。
Azure Data Lake のチュートリアル
下記「参考」中の
「チュートリアル:Azure Data Lake Storage Gen2、Azure Databricks、および Spark」
... フライト データのダウンロードができない。
(.NET for Apache Spark)
-
.NET for Apache Spark ガイドの Get started in 10 minutesの
周辺を処理してみる。 -
ビルドしたモノを ZIP して、
spark-submitするのでローカル環境構築が必要。
-
実際に発行&アップロード&実行してみる。
-
ターゲットは ubuntu
>dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.16.04-x64 -
publish したものを
publish.zipにまとめる。
Windows なので、PowerShellを使用してみる。powershell compress-archive publish ..\publish.zip
-
依存関係ファイルをダウンロードする。
※ URL : https://github.com/dotnet/spark/tree/master/deployment
-
Microsoft.Spark.Worker
ローカル実行で使用したものに対応する Linux 版の*.tar.gz
https://github.com/dotnet/spark/releases/download/v1.0.0/Microsoft.Spark.Worker.netcoreapp3.1.linux-x64-1.0.0.tar.gz -
install-worker.sh
Apache Spark クラスタに Worker バイナリをインストール -
db-init.sh- ワーカーとアプリの依存関係を Databricks Spark クラスタにインストール。
-
DOTNET_SPARK_RELEASEを修正するという手順があるが、コレは不要らしい。
※
*.shの行の終わりは Unix 形式 (LF) であることを確認
次のファイルをアップロードする
-
アプリケーション
-
一式
-
publish.zip
発行したアプリ -
input.txt
自分は、input.txtをプロジェクト出力に含めていたので publish に
同梱されているが、
カレント・ディレクトリが異なるため別途アップロードが必要らしい
(根拠は以下のエラー・メッセージ)。Microsoft.Spark.JvmException: org.apache.spark.sql.AnalysisException: Path does not exist: dbfs:/input.txt; -
microsoft-spark-2-4_2.11-1.0.0.jar
ローカル実行で使用したもの
(publish 中で使用したバージョン)
-
-
dbfs にアップロード
上記「ツール」の Databricks CLI を使って。databricks fs cp input.txt dbfs:/input.txt databricks fs cp publish.zip dbfs:/spark-dotnet/publish.zip databricks fs cp microsoft-spark-2-4_2.11-1.0.0.jar dbfs:/spark-dotnet/microsoft-spark-2-4_2.11-1.0.0.jar※
input.txtが ZIP に同梱されていても、
カレント・ディレクトリが異なるのでアップロードが必要。
-
-
依存関係
-
上記「依存関係のダウンロード」の一式
- Microsoft.Spark.Worker
install-worker.shdb-init.sh
-
dbfs にアップロード
Databricks CLI を使って。databricks fs cp Microsoft.Spark.Worker.netcoreapp3.1.linux-x64-1.0.0.tar.gz dbfs:/spark-dotnet/Microsoft.Spark.Worker.netcoreapp3.1.linux-x64-1.0.0.tar.gz databricks fs cp install-worker.sh dbfs:/spark-dotnet/install-worker.sh databricks fs cp db-init.sh dbfs:/spark-dotnet/db-init.sh
-
-
参考
- DBFS CLI - Azure Databricks - Workspace | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/databricks/dev-tools/cli/dbfs-cli
- DBFS CLI - Azure Databricks - Workspace | Microsoft Docs
-
ジョブを作成する。
ワークスペース(Databricks のポータル・サイト)の-
左メニュー中の [Job] アイコンを選択し、
-
次に [+ Create Job] を選択して、Job 名を入力、
-
以下、UI が変更されているので、以下を参考にする。
- ジョブ - Azure Databricks | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/databricks/jobs
- ジョブ - Azure Databricks | Microsoft Docs
-
-
spark-submitの構成
初めに、[Task]の[Type]を[Notebook]から[Spark Submit]に変更する。 -
クラスタ構成の設定
次に、Cluster の[Edit]を選択し、Configure New Cluster を表示させる。-
Databricks Runtime Version を選択
- Spark 2.4.1 が無かったので、最も近い、
- Runtime: 5.5 LTS (Scala 2.11, Spark 2.4.3) に変更。
-
Init スクリプトを
db-init.shに設定-
Advanced options を展開する。
-
[Init Scripts]タブを選択する。
-
[Destination]ドロップダウンリストで DBFS を選択する。
-
[Init Script Path]に以下を入力する。
dbfs:/spark-dotnet/db-init.sh -
[Confirm]を押下する。
-
※ コレにより、
db-init.sh内でinstall-worker.shが構成される
($1-$3をパラメタライズ)。 -
-
パラメタの設定
-
パラメタに次の文字列を貼り付ける。
["--class","org.apache.spark.deploy.dotnet.DotnetRunner","/dbfs/spark-dotnet/microsoft-spark-2-4_2.11-1.0.0.jar","/dbfs/spark-dotnet/publish.zip","mySparkApp"]
-
自分は、
-
mySparkApp→MySparkAppとしていたので、その様に変更した。 -
実行に必要となる引数が存在する場合、
spark-submitでは、以下のように指定できる模様。.NET for Apache Spark ジョブを Databricks に送信する | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/spark/how-to-guides/databricks-deploy-methods -
... と言う事で、実際、パラメタには、次の文字列を貼り付けた。
["--class","org.apache.spark.deploy.dotnet.DotnetRunner","/dbfs/spark-dotnet/microsoft-spark-2-4_2.11-1.0.0.jar","/dbfs/spark-dotnet/publish.zip","MySparkApp", "input.txt"]
-
-
[Create]を押下する。
-
-
アプリの実行
-
ここで、Init スクリプトが実行される。
-
ジョブのクラスタが作成されるまで数分かかる。
(リソース・グループを確認するとクラスタのリソース増が確認できる) -
Job 名の横にある [Run Now] ボタンをクリックする。
-
Job で構成した Spark クラスタで Job が実行される。
-
実行結果は、Completed Runs 表中の Spark 列に表示される Logs から確認できる。

-
-
リソースのクリーンアップ
- リソース・グループを確認するとクラスタのリソース減が確認できる
- 必要に応じて、(ワークスペースとクラスタの)リソース・グループを削除する。
-
上記「ジョブを作成して実行」の
「クラスタの作成中のdb-init.sh設定+アプリの実行」
≒ スクリプト アクション実行 -
エラー
-
1
Azure のクォータ制限を解除する。-
Cluster:
Driver: Standard_DS3_v2, Workers: Standard_DS3_v2, 8 workers, 5.5 LTS (includes Apache Spark 2.4.3, Scala 2.11) -
Message:
Unexpected failure while waiting for the cluster (...) to be ready. Cause Unexpected state for cluster (...): AZURE_QUOTA_EXCEEDED_EXCEPTION(CLIENT_ERROR): azure_error_code : QuotaExceeded, azure_error_message : Operation could not be completed as it results in exceeding approved Total Regional Cores quota. Additional details - Deployment Model: Resource Manager, Location: japaneast, Current Limit: 10, Current Usage: 4, Additional Required: 28, (Minimum) New Limit Required: 32. Submit a request for Quota increase at ... by specifying parameters listed in the 'Details' section for deployment to succeed. Pleas ... ***WARNING: message truncated. Skipped 964 bytes of output** -
クォータ制限を解除する。
以下のクォータを 32 に設定する。
・Total Regional vCPUs のクォータ
・Standard_DS3_v2 → DSv2 シリーズ(Standard DSv2 Promo Family vCPUs) の
クォータ
-
-
2
input.txtの扱いについて、- ZIP 同梱していても、別途アップロードが必要になる。
- また、コマンド引数でファイル名を渡している場合、
spark-submitのパラメタで設定可能。
-
移行メモ(URL の削除): 上記エラー メッセージ中の
クォータ増加申請 URL にはサブスクリプション ID が含まれていたため、
「...」に置き換えた(申請はポータルの
[ヘルプとサポート]→[サポート リクエスト]から行える)。
ワークスペースをクリーンナップするか新規作成する必要があるので、
1 つのバッチにまとめて、コマンドライン引数で切り替えるのが良いかも。
-
アプリ
-
publish.zipの発行とアップロードcd ...\DotNet4ApacheSpark\mySparkBatchApp\mySparkBatchApp dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.16.04-x64 cd ...\mySparkBatchApp\bin\Release\netcoreapp3.1\ubuntu.16.04-x64 powershell compress-archive publish ..\publish.zip cd .. databricks fs rm dbfs:/spark-dotnet/publish.zip databricks fs cp publish.zip dbfs:/spark-dotnet/publish.zip -
projects_smaller.csvのアップロードdatabricks fs cp projects_smaller.csv dbfs:/projects_smaller.csv
-
-
spark-submitのパラメタ設定["--class","org.apache.spark.deploy.dotnet.DotnetRunner","/dbfs/spark-dotnet/microsoft-spark-2-4_2.11-1.0.0.jar","/dbfs/spark-dotnet/publish.zip","mySparkBatchApp", "projects_smaller.csv"]
-
エラー
何故か、最後のDataFrame.Showでエラーになって
4 つ目の結果セットが表示されなかった(原因不明)。
未実施
未実施
可能らしいがサンプルが無いのは、上記「Scala」でやるから?
移行メモ(未記述): 「Java」節は元ページでも見出し(「...」)のみで、
本文が書かれていない。
- Azure Databricks を使ってみた – ナレコム Azure レシピ | AI に強い情報サイト
https://azure-recipe.kc-cloud.jp/2018/08/azure-databricks/
Apache Spark チュートリアル: Apache Spark チュートリアルを開始する
- はじめに
https://databricks.com/jp/spark/getting-started-with-apache-spark - クイックスタート
https://databricks.com/jp/spark/getting-started-with-apache-spark/quick-start - DATAFRAME
https://databricks.com/jp/spark/getting-started-with-apache-spark/dataframes - DATASET
https://databricks.com/jp/spark/getting-started-with-apache-spark/datasets - 機械学習
https://databricks.com/jp/spark/getting-started-with-apache-spark/machine-learning - ストリーミング
https://databricks.com/jp/spark/getting-started-with-apache-spark/streaming - 次のステップ
https://databricks.com/jp/spark/getting-started-with-apache-spark/whats-next
-
チュートリアル
-
Azure Databricks を使用してデータの抽出、変換、読み込みを行う
https://docs.microsoft.com/ja-jp/azure/databricks/scenarios/databricks-extract-load-sql-data-warehouse -
Event Hubs を使用してデータを Azure Databricks にストリーム配信する
https://docs.microsoft.com/ja-jp/azure/databricks/scenarios/databricks-stream-from-eventhubs -
Azure Databricks を使用したストリーミング データに対する感情分析
https://docs.microsoft.com/ja-jp/azure/databricks/scenarios/databricks-sentiment-analysis-cognitive-services
-
-
クイック スタート
-
Azure portal を使用して Azure Databricks ワークスペースで Spark ジョブを実行する
https://docs.microsoft.com/ja-jp/azure/databricks/scenarios/quickstart-create-databricks-workspace-portal -
PowerShell を使用して Azure Databricks ワークスペースを作成する
https://docs.microsoft.com/ja-jp/azure/databricks/scenarios/quickstart-create-databricks-workspace-powershell
-
-
チュートリアル
- Azure Databricks ノートブックから
仮想ネットワーク内の SQL Server Linux Docker コンテナーのクエリを実行する
https://docs.microsoft.com/ja-jp/azure/databricks/scenarios/vnet-injection-sql-server - Azure Data Lake Storage Gen2、Azure Databricks、および Spark
https://docs.microsoft.com/ja-jp/azure/storage/blobs/data-lake-storage-use-databricks-spark
- Azure Databricks ノートブックから
-
Azure Databricks - Workspace > Apache Spark の概要
https://docs.microsoft.com/ja-jp/azure/databricks/getting-started/spark/- Apache Spark を使ってみる
https://docs.microsoft.com/ja-jp/azure/databricks/getting-started/spark/quick-start - DataFrames のチュートリアル
https://docs.microsoft.com/ja-jp/azure/databricks/getting-started/spark/dataframes - Datasets のチュートリアル
https://docs.microsoft.com/ja-jp/azure/databricks/getting-started/spark/datasets - MLlib を使用した機械学習のチュートリアル
https://docs.microsoft.com/ja-jp/azure/databricks/getting-started/spark/machine-learning - 下記「構造化ストリーミング」
- Apache Spark を使ってみる
-
Azure Databricks を使用してデータ サイエンスを実行する
https://docs.microsoft.com/ja-jp/learn/paths/perform-data-science-azure-databricks/-
Azure Databricks の説明
https://docs.microsoft.com/ja-jp/learn/modules/describe-azure-databricks/- Azure Databricks について説明する
- ワークスペースとクラスターを作成する
- ノートブックを理解する
- 演習: ノートブックを操作する
-
Spark アーキテクチャの基礎
https://docs.microsoft.com/ja-jp/learn/modules/spark-architecture-fundamentals/- Azure Databricks の Spark クラスターのアーキテクチャについて理解する
- Spark ジョブのアーキテクチャについて理解する
-
Azure Databricks でデータの読み取りと書き込みを行う
https://docs.microsoft.com/ja-jp/learn/modules/read-write-data-azure-databricks/- CSV 形式でデータを読み取る
- JSON 形式でデータを読み取る
- Parquet 形式でデータを読み取る
- テーブルとビューに格納されているデータを読み取る
- データを書き込む
- 演習: データの読み取りと書き込みを行う
-
Azure Databricks でデータフレームを操作する
https://docs.microsoft.com/ja-jp/learn/modules/work-dataframes-azure-databricks/- データフレームについて説明する
- 一般的なデータフレーム メソッドを使用する
- display 関数を使用する
- 演習: 個別の記事
-
ユーザー定義関数を操作する
https://docs.microsoft.com/ja-jp/learn/modules/work-with-user-defined-functions/- ユーザー定義関数を作成する
- 演習: ユーザー定義関数を使用した ETL 操作を実行する
-
Delta Lake の構築とクエリ
https://docs.microsoft.com/ja-jp/learn/modules/build-query-delta-lake/- オープンソースの Delta Lake の説明
- 演習: 基本的な Delta Lake 機能の使用
- Azure Databricks によって Delta Lake を管理する方法についての説明
- 演習: Delta Lake Time Machine を使用して最適化を実行する
-
Azure Databricks を使用した機械学習の実行
https://docs.microsoft.com/ja-jp/learn/modules/perform-machine-learning-with-azure-databricks/- 機械学習を理解する
- 演習: モデルをトレーニングし、予測を作成する
- 探索的データ分析を使用してデータを理解する
- 演習: 探索的データ分析を実行する
- 機械学習ワークフローについて説明する
- 演習: 機械学習のベースライン モデルを構築して評価する
-
機械学習モデルのトレーニング
https://docs.microsoft.com/ja-jp/learn/modules/train-machine-learning-model/- データセットの特徴量化を実行する
- 演習: データセットの特徴量化を終了する
- 回帰モデリングを理解する
- 演習: 回帰モデルを構築して解釈する
-
Azure Databricks で MLflow を操作する
https://docs.microsoft.com/ja-jp/learn/modules/work-with-mlflow-azure-databricks/- MLflow を使用して実験を追跡し、メトリックをログ記録し、実行を比較する
- 演習: MLflow を操作して、実験のメトリック、パラメーター、成果物、
モデルを追跡する
-
ハイパーパラメーターのチューニングによるモデル選択の実行
https://docs.microsoft.com/ja-jp/learn/modules/perform-model-selection-with-hyperparameter-tuning/- モデルの選択とハイパーパラメーターのチューニングについての説明
- 演習: ハイパーパラメーターをチューニングして最適なモデルを選択する
-
分散型トレーニングのための Horovod によるディープ ラーニング
https://docs.microsoft.com/ja-jp/learn/modules/deep-learning-with-horovod-distributed-training/- Horovod を使用してディープ ラーニング モデルをトレーニングする
- Petastorm を使用して、分散型モデル トレーニング用に Horovod で
Apache Parquet 形式のデータセットを読み取る - 演習: ディープ ラーニング モデルをトレーニングするために
Horovod と Petastorm を使用する
-
下記「Azure Machine Learning」
-
-
構造化ストリーミング
https://docs.microsoft.com/ja-jp/azure/databricks/spark/latest/structured-streaming/- デモ ノートブック
https://docs.microsoft.com/ja-jp/azure/databricks/spark/latest/structured-streaming/demo-notebooks - 運用環境での構造化ストリーミング
https://docs.microsoft.com/ja-jp/azure/databricks/spark/latest/structured-streaming/production - 構造化ストリーミングの例
https://docs.microsoft.com/ja-jp/azure/databricks/spark/latest/structured-streaming/examples
- デモ ノートブック
-
チュートリアル
https://docs.microsoft.com/ja-jp/azure/databricks/getting-started/spark/streaming
-
Azure Machine Learning を操作してサービス モデルをデプロイする
https://docs.microsoft.com/ja-jp/learn/modules/work-with-azure-machine-learning-deploy-serving-models/ -
AutoML と Azure Databricks を使用して開発する
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-configure-databricks-automl-environment
- KcMichael
https://qiita.com/KcMichael- Azure Databricks:
-
- Databricks の基本事項
https://qiita.com/KcMichael/items/34902eedf9270059c041
- Databricks の基本事項
- 3-1. DBFS に Blob Storage をマウント
https://qiita.com/KcMichael/items/8f5c8a3f97df31769f11 - 3-2. DBFS に Azure Data Lake Storage Gen2 をマウント
https://qiita.com/KcMichael/items/98493d2e9bb3eb3f12db
- Azure Databricks:
移行メモ(空の節): 「参考 > Qiita > Scala」は元ページでも
見出しのみで項目が無かったため、節ごと省いた。
- Azure Databricks / Azure DatabricksのNotebook
- Azure Event Hubsチュートリアル
- .NET for Apache Spark / .NET for Apache Sparkチュートリアル
- Azure HDInsight / Azureのクォータ
Tags: クラウド, ビッグデータ, Azure
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。