Azure Databricksチュートリアル
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>Azure Databricks]]
--Azure Databricksチュートリアル
--[[Azure DatabricksのNotebook]]
* 目次 [#w8c8f593]
#contents
*概要 [#m1326267]
Azure Databricksのチュートリアル。
*準備 [#n68abe24]
**契約 [#t42d5e96]
***[[Azureの契約>AzureのPoC環境を契約する]] [#ke36671c]
***Databricksの契約 [#cf1e6ce6]
-Azureの無料試用版サブスクリプションは利用不可との事。
-ただし、Azureの従量課金制サブスクリプションで~
Databricksの14日間の無料試用版を使用可能。
--無料の Azure アカウントと Azure Databricks ユニット | M...
https://azure.microsoft.com/ja-jp/free/services/databricks/
>既存のサブスクリプションで試用版を使用する場合、~
ワークスペース作成の価格レベルで試用版を選択する。
--ただし、
---Databricksユニットには課金されないが、
---クラスタのVMには課金されるので注意する。
**環境 [#rf9815ce]
***ワークスペース [#gd9a5060]
-作成開始の方法
--ポータルで [リソースの作成] > [分析] > [Azure Databrick...
--若しくは、[Azure Databricks | Microsoft Azure] の~
[Already an Azure customer? Get started]を押下。~
https://portal.azure.com/#create/Microsoft.Databricks
-値を指定
--ワークスペース名~
mydatabrickswsとか
--サブスクリプション~
任意の値
--リソース グループ
---DplRGとか
---既定値は、ワークスペース名に、prefixとしてdatabricks-r...
databricksXXXと入力すると、databricks-rg-databricksXXX-XX...
--場所(リージョン)
---データ・パープライン系は「West US 2」辺りが良いかも。
---リージョン別の Azure 製品 | Microsoft Azure~
https://azure.microsoft.com/ja-jp/global-infrastructure/s...
--価格レベル~
試用版を選択できる。
--Virtual Network~
以下の項目は、共に「いいえ」を選択した。
---Secure Cluster Connectivity による...デプロイ (パブリ...
---自分の仮想ネットワーク (VNet) に...デプロイします~
-[作成]ボタンを押下~
ワークスペースの作成には数分かかる。
--「デプロイが完了しました」が表示されたら、
--[リソースに移動]ボタンを押下する。
--[ワークスペースの起動]ボタンを押下する。
--Databricks のポータル・サイトに移動する。
-エンドポイントの保護
--IPアドレス制限~
プレミアム・ライセンスが必要
--FQDN名
<databricks-instance> = adb-<workspace-id>.<random-numbe...
--以下、[[Databricks CLI>#bf24b43b]]が必要
---トークンの設定
$ export DATABRICKS_TOKEN=xxxxxx
---有効化(WSLで)
$ curl -X PATCH https://<databricks-instance>/api/2.0/wo...
--header "Authorization: Bearer $DATABRICKS_TOKEN" \
-d '{
"enableIpAccessLists": "true"
}'
---付与(WSLで)
$ curl -X POST https://<databricks-instance>/api/2.0/ip-...
--header "Authorization: Bearer $DATABRICKS_TOKEN" \
-d '{
"label": "office",
"list_type": "ALLOW",
"ip_addresses": [
"xxx.xxx.xxx.xxx"
]
}'
-IaC化
--[[Azure CLI]]で~
---現時点でクイック スタート情報なし。
--[[PowerShell]]で
---クイック スタートから、以下のように作成可能。
>Connect-AzAccount
>Set-AzContext -SubscriptionId ...
>Register-AzResourceProvider -ProviderNamespace Microsof...
>New-AzDatabricksWorkspace -Name [名称] -ResourceGroupNa...
---参考~
・https://opentouryo.osscons.jp/index.php?%E9%83%A8%E4%BC...
・https://github.com/OpenTouryoProject/DataPipeline/blob/...
-参考
--DatabricksへのアクセスをIP制限する - 雲のメモ帳~
https://www.cloudnotes.tech/entry/databricks_iprestrict
--Azure Databricks 個人用アクセストークンを使用した認証-A...
https://docs.microsoft.com/ja-jp/azure/databricks/dev-too...
***クラスタ [#med3ca62]
手順に従い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~
-[Create Cluster]ボタンを押下~
※ この手順では、&color(red){クォータ制限};の問題は発生し...
***Notebook [#je91701c]
-以下の手順に従いNotebookを作成する。
--[New Notebook]を押下
--入力
---Name : mynotebook
---Language : Python
---Cluster : mysparkcluster
--[Create]ボタンを押下
-Notebook上でインタラクティブ実行してみる。
--[[ハロー・ワールド風>https://dotnetdevelopmentinfrastru...
-参考
--[[Azure DatabricksのNotebook]]
***ツール [#bf24b43b]
-Databricks CLI~
ファイル・システムにアクセスしたりする時に使う。
--Python 3.6 以降が必要
--[[Pythonのインストール>https://dotnetdevelopmentinfrast...
--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://.....
---トークンの取得
#ref(無題1.png,left,nowrap,トークンの取得,70%)
--トークンの入力
Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--以下のようになる(Tokenの所は入力が表示されない)。
>databricks configure --token
Databricks Host (should begin with https://): https://.....
Token:
>
*Scala [#m5f129dc]
[[Notebook>#je91701c]]のセルに記述可能。
**ETL のチュートリアル [#xf1b382e]
[[参考>#j501dd8e]]中の「...データの抽出、変換、読み込みを...
**Event Hubsと組み合わせるチュートリアル [#qb0fbdbe]
[[参考>#j501dd8e]]中の「Event Hubs を使用して...ストリー...
**感情分析のチュートリアル [#qb0fbdbe]
[[参考>#j501dd8e]]中の「Azure Databricks を使用したストリ...
**参考 [#w15adae9]
[[Microsoft Docs>#y4d4dbfd]]、[[Qiita>#g377cc6b]]
*[[Python (PySpark)>https://dotnetdevelopmentinfrastructu...
[[Notebook>#je91701c]]のセルに記述可能。
**Docsのクイック スタート [#qd3c3cb0]
-[[参考>#j501dd8e]]中のクイック スタート。
-Docsの説明が雑なので以下、注釈を加えてみる。
***Parquetファイル [#q83dd008]
-CSVやTSVファイルのような行指向ファイル形式~
に対し効率的で高性能な列指向ストレージ形式。
-ダウンロード先がイマイチ不明なので、以下から取得する。~
https://github.com/Teradata/kylo/tree/master/samples/samp...
-先ずは、[[Jupyter Notebook>Azure DatabricksのNotebook#p8...
--読込
parquet_df = spark.read.parquet("path/to/userdata1.parqu...
--表示
parquet_df.show()
--結果
+-------------------+---+----------+---------+----------...
| registration_dttm| id|first_name|last_name| ...
+-------------------+---+----------+---------+----------...
|2016-02-03 16:55:29| 1| Amanda| Jordan| ajorda...
...
-一応、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()
--結果~
Displaying top 10 rows:
上記が10行に絞られた結果
***[[Azureストレージ>Azureのストレージ]]へアクセス [#l015...
その次に、[[Azureストレージ>Azureのストレージ]]から読込ん...
-[[Parquetファイル>#q83dd008]]を[[Azureストレージ>Azureの...
--[[Azureストレージ>Azureのストレージ]]作成のスクリプトは...
--[[Parquetファイル>#q83dd008]]はポータルからアップロード...
-[[Jupyter Notebook>Azure DatabricksのNotebook#p84bd61d]]...
--実行
from pyspark.sql import SparkSession
spark: SparkSession = SparkSession.builder.appName("Simp...
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' % ...
spark.conf.set('fs.azure.sas.%s.%s.blob.core.windows.net...
print('Remote blob path: ' + wasbs_path)
parquet_df = spark.read.parquet(wasbs_path)
parquet_df.show()
--結果~
ライブラリが足りないもよう。
Class org.apache.hadoop.fs.azure.NativeAzureFileSystem$S...
***[[Azure Databricks]]上で実行 [#m6c58006]
ライブラリが足りないので、[[Azure Databricks]]上で実行し...
-前提
--ワークスペースの作成(作成のスクリプトは[[コチラ>#gd9a5...
--クラスタの作成(作成の手順は[[コチラ>#med3ca62]]
--Notebookの作成する(作成の手順は[[コチラ>#je91701c]]
-[[先程のコード>#l015e466]]を実行する。
--Clusterを開始する。
---左上のドロップダウン・リストから作成したClusterを選択...
---そこから[Start Cluster]を選択して押下する。
--(先程の)コードをセルに貼り付ける。
--Shift + Enter キーを使用してコードを実行
--無事、実行されたことを確認したら~
以下のようにコードを変更して再実行する。
---変更前
parquet_df.show()
---変更後
display(parquet_df)
--データの視覚的な表現を作成する。~
displayで表示された形式の出力の一番下から、~
[Plot Options]をクリックし、以下のようにする。
#ref(無題.png,left,nowrap,グラフ表示,50%)
--Clusterを停止する。
---Clusterを開始した際に使ったドロップダウン・リストからC...
---Cluster管理画面で、Terminate or Deleteを選択する。
---課金がアレなので、~
・PoCならリソース・グループごと削除しておいた方が良い。~
・と言うのも、リソース・グループを見るとClusterのリソース...
**[[PySparkチュートリアル>https://dotnetdevelopmentinfras...
[[クイック スタート>#qd3c3cb0]]も終わったので、[[PySpark...
***[[on Jupyter Notebook on Docker>https://dotnetdevelopm...
***[[DataFrameに対する様々な操作>https://dotnetdevelopmen...
**静的ファイルで構造化ストリーミングをエミュレート [#gd02...
[[databricks.comのApache Spark チュートリアル(ストリーミ...
***環境準備 [#t647655e]
作成のスクリプトは以下
-送信:なし
-受信:[[Azure Databricks>#gd9a5060]]
***エミュレート [#c2e0e166]
readStreamでinputPathをmaxFilesPerTriggerで読む...みたい...
from pyspark.sql.functions import *
# Similar to definition of staticInputDF above, just usi...
streamingInputDF = (
spark
.readStream
.schema(jsonSchema) # Set the schema o...
.option("maxFilesPerTrigger", 1) # Treat a sequence...
.json(inputPath)
)
# Same query as staticInputDF
streamingCountsDF = (
streamingInputDF
.groupBy(
streamingInputDF.action,
window(streamingInputDF.time, "1 hour"))
.count()
)
***出力方法 [#r4ddc25c]
インタラクティブにやる場合、
-in-memoryテーブルに名前を付け、~
query = (
streamingCountsDF
.writeStream
.format("memory") # memory = store in-memory ...
.queryName("counts") # counts = name of the in-m...
.outputMode("complete") # complete = all the counts...
.start()
)
-「%sql」のマジックコマンドでセレクトする。
%sql select action, date_format(window.end, "MMM-dd HH:m...
みたいな方法になる。
**[[EventHubsのKafka>Azure Event Hubsチュートリアル#od841...
[[PySparkチュートリアル>https://dotnetdevelopmentinfrastr...
(コンテナのJupyter NotebookからコンテナのKafkaに接続でき...
Azure Databricksでリトライ。
***環境準備 [#n3bec3ce]
作成のスクリプトは以下
-送信:[[Azure Event Hubs>Azure Event Hubsチュートリアル#...
-受信:[[Azure Databricks>#gd9a5060]]
***送受信 [#f5fa0a25]
-[[純正クライアントを使用した送信処理>Azure Event Hubsチ...
-Azure Databricksで受信する。
--[[Azure DatabricksのCluster・Notebookを作成>#m6c58006]]...
--[[PySparkチュートリアル中の構造化ストリーミング>https:/...
[[入力部分をKafka化>https://dotnetdevelopmentinfrastructu...
---ただし、[[Event HubsのKafkaエンドポイント風>.NET for A...
---パラメタは[[純正クライアントを使用した受信処理>Azure E...
(詳細不明だが、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.wind...
eh_sasl = 'kafkashaded.org.apache.kafka.common.security....
windowSize = 10
slideSize = 10
if slideSize > windowSize:
print("<slideSize> must be less than or equal to <wi...
windowDuration = '{} seconds'.format(windowSize)
slideDuration = '{} seconds'.format(slideSize)
spark = SparkSession\
.builder\
.appName("StructuredNetworkWordCountWindowed")\
.getOrCreate()
# Create DataFrame representing the stream of input line...
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() ...
words = lines.select(
explode(split(lines.value, ' ')).alias('word'),
lines.timestamp
)
# Group the data by window and word and compute the coun...
windowedCounts = words.groupBy(
window(words.timestamp, windowDuration, slideDuratio...
words.word
).count().orderBy('window')
# Start running the query that prints the windowed word ...
query = windowedCounts\
.writeStream\
.outputMode('complete')\
.format('console')\
.option('truncate', 'false')\
.start()
query.awaitTermination()
-構造化ストリーミングでは(?)、~
consoleへの出力が確認できなかったので、~
インタラクティブにやる場合、
--最後を、以下のように変更し、~
(in-memoryテーブルに名前つけて)
# Start running the query that prints the windowed word ...
query = windowedCounts\
.writeStream\
.format("memory")\
.queryName("counts")\
.outputMode("complete")\
.start()
# query.awaitTermination()
--%sqlのマジックコマンドでセレクトする。
%sql select * from counts
**その他 [#x1c99a7c]
***KcMichael - Qiita [#a81fca8a]
[[参考>#j501dd8e]]中の...
***SQL Serverと組み合わせるチュートリアル [#qb0fbdbe]
[[参考>#j501dd8e]]中の「...ノートブックから...SQL Server ...
**古い? [#g2030b5a]
ちょっと古いのか?アカンやつ。
***Azure Databricksを使ってみた [#hf19908a]
[[参考>#j501dd8e]]中の「Azure Databricksを使ってみた」
...ちと古いし、他にも色々アレなので、パス。
***[[Azure Data Lake]] のチュートリアル [#gffec173]
[[参考>#j501dd8e]]中の
>「チュートリアル:Azure Data Lake Storage Gen2、Azure Dat...
...フライト データのダウンロードができない。
**参考 [#w15adae9]
[[Microsoft Docs>#h5fc34ee]]、[[Qiita>#e44d9b2a]]
*.NET [#q1122d96]
(.NET for Apache Spark)
-[[.NET for Apache SparkガイドのGet started in 10 minutes...
-ビルドしたモノをZIPして、spark-submitするのでローカル環...
**Get started in 10 minutes [#ta98bbdc]
-[[以前開発したサンプルの動作確認を行い>.NET for Apache S...
-実際に発行&アップロード&実行してみる。
***アプリの発行 [#y0b75f0a]
-ターゲットはubuntu
>dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.16...
-publishしたものをpublish.zipにまとめる。~
Windowsなので、[[PowerShell]]を使用してみる。
powershell compress-archive publish ..\publish.zip
***依存関係のダウンロード [#n418b549]
-依存関係ファイルをダウンロードする。
>※ URL : https://github.com/dotnet/spark/tree/master/depl...
-Microsoft.Spark.Worker~
ローカル実行で使用したものに対応するLinux版の*.tar.gz~
https://github.com/dotnet/spark/releases/download/v1.0.0/...
-install-worker.sh~
Apache Spark クラスタに Worker バイナリをインストール
-db-init.sh
--ワーカーとアプリの依存関係を Databricks Spark クラスタ...
--DOTNET_SPARK_RELEASEを修正するという手順があるが、コレ...
>※ *.shの行の終わりは Unix 形式 (LF) であることを確認~
***ファイルのアップロード [#uee92a05]
次のファイルをアップロードする
-アプリケーション
--一式
---publish.zip~
発行したアプリ
---input.txt~
自分は、input.txtをプロジェクト出力に含めていたのでpublis...
カレント・ディレクトリが異なるため別途アップロードが必要...
Microsoft.Spark.JvmException: org.apache.spark.sql.Analy...
---microsoft-spark-2-4_2.11-1.0.0.jar~
ローカル実行で使用したもの(publish中で[[使用したバージョ...
--dbfsにアップロード~
[[Databricks CLI>#bf24b43b]]を使って。
databricks fs cp input.txt dbfs:/input.txt
databricks fs cp publish.zip dbfs:/spark-dotnet/publish....
databricks fs cp microsoft-spark-2-4_2.11-1.0.0.jar dbfs...
※ input.txtがZIPに同梱されていても、カレント・ディレクト...
-[[依存関係>#n418b549]]
--[[前述>#n418b549]]の一式
---Microsoft.Spark.Worker
---install-worker.sh
---db-init.sh
--dbfsにアップロード~
[[Databricks CLI>#bf24b43b]]を使って。
databricks fs cp Microsoft.Spark.Worker.netcoreapp3.1.li...
databricks fs cp install-worker.sh dbfs:/spark-dotnet/in...
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-too...
***ジョブを作成して実行 [#a1355971]
-ジョブを作成する。~
[[ワークスペース(Databricks のポータル・サイト)>#ye161f...
--左メニュー中の [Job] アイコンを選択し、
--次に[+ Create Job] を選択して、Job名を入力、
--以下、UIが変更されているので、以下を参考にする。
---ジョブ - Azure Databricks | Microsoft Docs~
https://docs.microsoft.com/ja-jp/azure/databricks/jobs
-spark-submitの構成~
初めに、[Task]の[Type]を[[[Notebook>#je91701c]]]から[Spar...
-クラスタ構成の設定~
次に、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 が構成さ...
-パラメタの設定~
--パラメタに次の文字列を貼り付ける。
["--class","org.apache.spark.deploy.dotnet.DotnetRunner"...
--自分は、
---mySparkApp → MySparkApp としていたので、その様に変更し...
---[[ 実行に必要となる引数>.NET for Apache Sparkチュート...
>.NET for Apache Spark ジョブを Databricks に送信する | M...
https://docs.microsoft.com/ja-jp/dotnet/spark/how-to-guid...
---...と言う事で、実際、パラメタには、次の文字列を貼り付...
["--class","org.apache.spark.deploy.dotnet.DotnetRunner"...
--[Create]を押下する。
-アプリの実行~
--ここで、[[Initスクリプト>#a1355971]]が実行される。
--ジョブのクラスタが作成されるまで数分かかる。~
(リソース・グループを確認するとクラスタのリソース増が確...
--Job名の横にある [Run Now] ボタンをクリックする。
--Jobで構成した Spark クラスタでJobが実行される。
--実行結果は、Completed Runs表中のSpark列に表示されるLogs...
#ref(無題2.png,left,nowrap,実行の結果,70%)
-リソースのクリーンアップ
--リソース・グループを確認するとクラスタのリソース減が確...
--必要に応じて、(ワークスペースとクラスタの)リソース・...
***参考 [#h06a7649]
-[[Azure HDInsightとの比較>Azure HDInsight#n2b1fb3a]]~
>[[クラスタの作成中のdb-init.sh 設定+アプリの実行>#a1355...
>≒ [[スクリプト アクション実行>Azure HDInsight#y790895b]]
-エラー
--1~
[[Azureのクォータ]]制限を解除する。
---Cluster:~
Driver: Standard_DS3_v2,
Workers: Standard_DS3_v2,
8 workers, 5.5 LTS (includes Apache Spark 2.4.3, Scala 2...
---Message:~
Unexpected failure while waiting for the cluster (...) t...
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 exce...
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
https://aka.ms/ProdportalCRP/?#create/Microsoft.Suppor...
by specifying parameters listed in the 'Details' secti...
Pleas ... ***WARNING: message truncated. Skipped 964 b...
---クォータ制限を解除する。~
以下のクォータを32に設定する。~
・Total Regional vCPUsのクォータ~
・Standard_DS3_v2 → DSv2 シリーズ(Standard DSv2 Promo Fam...
--2~
input.txtの扱いについて、
---[[ZIP同梱していても、別途アップロードが必要になる。>#u...
---[[また、コマンド引数でファイル名を渡している場合、spar...
**上記と同様に行ってみる例 [#m420e622]
ワークスペースをクリーンナップするか新規作成する必要があ...
1つのバッチにまとめて、コマンドライン引数で切り替えるの...
***[[バッチ処理>.NET for Apache Sparkチュートリアル#l7b48...
-アプリ
--publish.zipの発行とアップロード
cd ...\DotNet4ApacheSpark\mySparkBatchApp\mySparkBatchApp
dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.16....
cd ...\mySparkBatchApp\bin\Release\netcoreapp3.1\ubuntu....
powershell compress-archive publish ..\publish.zip
cd ..
databricks fs rm dbfs:/spark-dotnet/publish.zip
databricks fs cp publish.zip dbfs:/spark-dotnet/publish....
--projects_smaller.csvのアップロード
databricks fs cp projects_smaller.csv dbfs:/projects_sma...
-spark-submitのパラメタ設定
["--class","org.apache.spark.deploy.dotnet.DotnetRunner"...
-エラー~
何故か、最後のDataFrame.Showでエラーになって~
4つ目の結果セットが表示されなかった(原因不明)。
***[[構造化ストリーミング>.NET for Apache Sparkチュートリ...
未実施
***[[ML.NETでの感情分析>.NET for Apache Sparkチュートリア...
未実施
*Java [#re2bf642]
可能らしいがサンプルが無いのは、[[Scala>#m5f129dc]]でやる...
**... [#ab4244b8]
*参考 [#j501dd8e]
-Azure Databricksを使ってみた – ナレコムAzureレシピ | AI...
https://azure-recipe.kc-cloud.jp/2018/08/azure-databricks/
**databricks.com [#k666624d]
Apache Spark チュートリアル: Apache Spark チュートリアル...
-はじめに~
https://databricks.com/jp/spark/getting-started-with-apac...
-クイックスタート~
https://databricks.com/jp/spark/getting-started-with-apac...
-DATAFRAME~
https://databricks.com/jp/spark/getting-started-with-apac...
-DATASET~
https://databricks.com/jp/spark/getting-started-with-apac...
-機械学習~
https://databricks.com/jp/spark/getting-started-with-apac...
-ストリーミング~
https://databricks.com/jp/spark/getting-started-with-apac...
-次のステップ~
https://databricks.com/jp/spark/getting-started-with-apac...
**microsoft.com [#bbd920d1]
***Scala [#y4d4dbfd]
-チュートリアル
--Azure Databricks を使用してデータの抽出、変換、読み込み...
https://docs.microsoft.com/ja-jp/azure/databricks/scenari...
--Event Hubs を使用してデータを Azure Databricks にストリ...
https://docs.microsoft.com/ja-jp/azure/databricks/scenari...
--Azure Databricks を使用したストリーミング データに対す...
https://docs.microsoft.com/ja-jp/azure/databricks/scenari...
***Python (PySpark) [#h5fc34ee]
-クイック スタート
--Azure portal を使用して Azure Databricks ワークスペース...
https://docs.microsoft.com/ja-jp/azure/databricks/scenari...
--PowerShell を使用して Azure Databricks ワークスペースを...
https://docs.microsoft.com/ja-jp/azure/databricks/scenari...
-チュートリアル
--Azure Databricks ノートブックから~
仮想ネットワーク内の SQL Server Linux Docker コンテナーの...
https://docs.microsoft.com/ja-jp/azure/databricks/scenari...
--Azure Data Lake Storage Gen2、Azure Databricks、および ...
https://docs.microsoft.com/ja-jp/azure/storage/blobs/data...
***Getting Started [#a53c1d8d]
-Azure Databricks - Workspace > Apache Spark の概要~
https://docs.microsoft.com/ja-jp/azure/databricks/getting...
--Apache Spark を使ってみる~
https://docs.microsoft.com/ja-jp/azure/databricks/getting...
--DataFrames のチュートリアル~
https://docs.microsoft.com/ja-jp/azure/databricks/getting...
--Datasets のチュートリアル~
https://docs.microsoft.com/ja-jp/azure/databricks/getting...
--MLlib を使用した機械学習のチュートリアル~
https://docs.microsoft.com/ja-jp/azure/databricks/getting...
--[[構造化ストリーミングのチュートリアル>#ib347719]]
***Perform Data Science - Learn [#o3f4dbe8]
-Azure Databricks を使用してデータ サイエンスを実行する~
https://docs.microsoft.com/ja-jp/learn/paths/perform-data...
--Azure Databricks の説明~
https://docs.microsoft.com/ja-jp/learn/modules/describe-a...
---Azure Databricks について説明する
---ワークスペースとクラスターを作成する
---ノートブックを理解する
---演習: ノートブックを操作する
--Spark アーキテクチャの基礎~
https://docs.microsoft.com/ja-jp/learn/modules/spark-arch...
---Azure Databricks の Spark クラスターのアーキテクチャに...
---Spark ジョブのアーキテクチャについて理解する
--Azure Databricks でデータの読み取りと書き込みを行う~
https://docs.microsoft.com/ja-jp/learn/modules/read-write...
---CSV 形式でデータを読み取る
---JSON 形式でデータを読み取る
---Parquet 形式でデータを読み取る
---テーブルとビューに格納されているデータを読み取る
---データを書き込む
---演習: データの読み取りと書き込みを行う
--Azure Databricks でデータフレームを操作する~
https://docs.microsoft.com/ja-jp/learn/modules/work-dataf...
---データフレームについて説明する
---一般的なデータフレーム メソッドを使用する
---display 関数を使用する
---演習: 個別の記事
--ユーザー定義関数を操作する~
https://docs.microsoft.com/ja-jp/learn/modules/work-with-...
---ユーザー定義関数を作成する
---演習: ユーザー定義関数を使用したETL操作を実行する
--Delta Lake の構築とクエリ~
https://docs.microsoft.com/ja-jp/learn/modules/build-quer...
---オープンソースの Delta Lake の説明
---演習: 基本的な Delta Lake 機能の使用
---Azure Databricks によって Delta Lake を管理する方法に...
---演習: Delta Lake Time Machine を使用して最適化を実行する
--Azure Databricks を使用した機械学習の実行~
https://docs.microsoft.com/ja-jp/learn/modules/perform-ma...
---機械学習を理解する
---演習: モデルをトレーニングし、予測を作成する
---探索的データ分析を使用してデータを理解する
---演習: 探索的データ分析を実行する
---機械学習ワークフローについて説明する
---演習: 機械学習のベースライン モデルを構築して評価する
--機械学習モデルのトレーニング~
https://docs.microsoft.com/ja-jp/learn/modules/train-mach...
---データセットの特徴量化を実行する
---演習: データセットの特徴量化を終了する
---回帰モデリングを理解する
---演習: 回帰モデルを構築して解釈する
--Azure Databricks で MLflow を操作する~
https://docs.microsoft.com/ja-jp/learn/modules/work-with-...
---MLflow を使用して実験を追跡し、メトリックをログ記録し...
---演習: MLflow を操作して、実験のメトリック、パラメータ...
--ハイパーパラメーターのチューニングによるモデル選択の実行~
https://docs.microsoft.com/ja-jp/learn/modules/perform-mo...
---モデルの選択とハイパーパラメーターのチューニングについ...
---演習: ハイパーパラメーターをチューニングして最適なモデ...
--分散型トレーニングのための Horovod によるディープ ラー...
https://docs.microsoft.com/ja-jp/learn/modules/deep-learn...
---Horovod を使用してディープ ラーニング モデルをトレーニ...
---Petastorm を使用して、分散型モデル トレーニング用に Ho...
---演習: ディープ ラーニング モデルをトレーニングするため...
--[[Azure Machine Learning を操作してサービス モデルをデ...
***構造化ストリーミング [#ib347719]
-構造化ストリーミング~
https://docs.microsoft.com/ja-jp/azure/databricks/spark/l...
--デモ ノートブック~
https://docs.microsoft.com/ja-jp/azure/databricks/spark/l...
--運用環境での構造化ストリーミング~
https://docs.microsoft.com/ja-jp/azure/databricks/spark/l...
--構造化ストリーミングの例~
https://docs.microsoft.com/ja-jp/azure/databricks/spark/l...
-チュートリアル~
https://docs.microsoft.com/ja-jp/azure/databricks/getting...
--デモ Scalaノートブック~
https://docs.microsoft.com/ja-jp/azure/databricks/_static...
--デモ Pythonノートブック~
https://docs.microsoft.com/ja-jp/azure/databricks/_static...
***Azure Machine Learning [#ybe88a83]
-Azure Machine Learning を操作してサービス モデルをデプロ...
https://docs.microsoft.com/ja-jp/learn/modules/work-with-...
-AutoML と Azure Databricks を使用して開発する~
https://docs.microsoft.com/ja-jp/azure/machine-learning/h...
**Qiita [#pba8f8ab]
***Scala [#g377cc6b]
***Python (PySpark) [#e44d9b2a]
-KcMichael~
https://qiita.com/KcMichael
--Azure Databricks:
---1. リソースの作成~
https://qiita.com/KcMichael/items/eb17285a46bda68f9c64
---2. Databricksの基本事項~
https://qiita.com/KcMichael/items/34902eedf9270059c041
---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
---4. PySpark基本操作~
https://qiita.com/KcMichael/items/8b1d51ac0e9f64633853
----
Tags: [[:クラウド]], [[:ビッグデータ]], [[:Azure]]
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>Azure Databricks]]
--Azure Databricksチュートリアル
--[[Azure DatabricksのNotebook]]
* 目次 [#w8c8f593]
#contents
*概要 [#m1326267]
Azure Databricksのチュートリアル。
*準備 [#n68abe24]
**契約 [#t42d5e96]
***[[Azureの契約>AzureのPoC環境を契約する]] [#ke36671c]
***Databricksの契約 [#cf1e6ce6]
-Azureの無料試用版サブスクリプションは利用不可との事。
-ただし、Azureの従量課金制サブスクリプションで~
Databricksの14日間の無料試用版を使用可能。
--無料の Azure アカウントと Azure Databricks ユニット | M...
https://azure.microsoft.com/ja-jp/free/services/databricks/
>既存のサブスクリプションで試用版を使用する場合、~
ワークスペース作成の価格レベルで試用版を選択する。
--ただし、
---Databricksユニットには課金されないが、
---クラスタのVMには課金されるので注意する。
**環境 [#rf9815ce]
***ワークスペース [#gd9a5060]
-作成開始の方法
--ポータルで [リソースの作成] > [分析] > [Azure Databrick...
--若しくは、[Azure Databricks | Microsoft Azure] の~
[Already an Azure customer? Get started]を押下。~
https://portal.azure.com/#create/Microsoft.Databricks
-値を指定
--ワークスペース名~
mydatabrickswsとか
--サブスクリプション~
任意の値
--リソース グループ
---DplRGとか
---既定値は、ワークスペース名に、prefixとしてdatabricks-r...
databricksXXXと入力すると、databricks-rg-databricksXXX-XX...
--場所(リージョン)
---データ・パープライン系は「West US 2」辺りが良いかも。
---リージョン別の Azure 製品 | Microsoft Azure~
https://azure.microsoft.com/ja-jp/global-infrastructure/s...
--価格レベル~
試用版を選択できる。
--Virtual Network~
以下の項目は、共に「いいえ」を選択した。
---Secure Cluster Connectivity による...デプロイ (パブリ...
---自分の仮想ネットワーク (VNet) に...デプロイします~
-[作成]ボタンを押下~
ワークスペースの作成には数分かかる。
--「デプロイが完了しました」が表示されたら、
--[リソースに移動]ボタンを押下する。
--[ワークスペースの起動]ボタンを押下する。
--Databricks のポータル・サイトに移動する。
-エンドポイントの保護
--IPアドレス制限~
プレミアム・ライセンスが必要
--FQDN名
<databricks-instance> = adb-<workspace-id>.<random-numbe...
--以下、[[Databricks CLI>#bf24b43b]]が必要
---トークンの設定
$ export DATABRICKS_TOKEN=xxxxxx
---有効化(WSLで)
$ curl -X PATCH https://<databricks-instance>/api/2.0/wo...
--header "Authorization: Bearer $DATABRICKS_TOKEN" \
-d '{
"enableIpAccessLists": "true"
}'
---付与(WSLで)
$ curl -X POST https://<databricks-instance>/api/2.0/ip-...
--header "Authorization: Bearer $DATABRICKS_TOKEN" \
-d '{
"label": "office",
"list_type": "ALLOW",
"ip_addresses": [
"xxx.xxx.xxx.xxx"
]
}'
-IaC化
--[[Azure CLI]]で~
---現時点でクイック スタート情報なし。
--[[PowerShell]]で
---クイック スタートから、以下のように作成可能。
>Connect-AzAccount
>Set-AzContext -SubscriptionId ...
>Register-AzResourceProvider -ProviderNamespace Microsof...
>New-AzDatabricksWorkspace -Name [名称] -ResourceGroupNa...
---参考~
・https://opentouryo.osscons.jp/index.php?%E9%83%A8%E4%BC...
・https://github.com/OpenTouryoProject/DataPipeline/blob/...
-参考
--DatabricksへのアクセスをIP制限する - 雲のメモ帳~
https://www.cloudnotes.tech/entry/databricks_iprestrict
--Azure Databricks 個人用アクセストークンを使用した認証-A...
https://docs.microsoft.com/ja-jp/azure/databricks/dev-too...
***クラスタ [#med3ca62]
手順に従い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~
-[Create Cluster]ボタンを押下~
※ この手順では、&color(red){クォータ制限};の問題は発生し...
***Notebook [#je91701c]
-以下の手順に従いNotebookを作成する。
--[New Notebook]を押下
--入力
---Name : mynotebook
---Language : Python
---Cluster : mysparkcluster
--[Create]ボタンを押下
-Notebook上でインタラクティブ実行してみる。
--[[ハロー・ワールド風>https://dotnetdevelopmentinfrastru...
-参考
--[[Azure DatabricksのNotebook]]
***ツール [#bf24b43b]
-Databricks CLI~
ファイル・システムにアクセスしたりする時に使う。
--Python 3.6 以降が必要
--[[Pythonのインストール>https://dotnetdevelopmentinfrast...
--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://.....
---トークンの取得
#ref(無題1.png,left,nowrap,トークンの取得,70%)
--トークンの入力
Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--以下のようになる(Tokenの所は入力が表示されない)。
>databricks configure --token
Databricks Host (should begin with https://): https://.....
Token:
>
*Scala [#m5f129dc]
[[Notebook>#je91701c]]のセルに記述可能。
**ETL のチュートリアル [#xf1b382e]
[[参考>#j501dd8e]]中の「...データの抽出、変換、読み込みを...
**Event Hubsと組み合わせるチュートリアル [#qb0fbdbe]
[[参考>#j501dd8e]]中の「Event Hubs を使用して...ストリー...
**感情分析のチュートリアル [#qb0fbdbe]
[[参考>#j501dd8e]]中の「Azure Databricks を使用したストリ...
**参考 [#w15adae9]
[[Microsoft Docs>#y4d4dbfd]]、[[Qiita>#g377cc6b]]
*[[Python (PySpark)>https://dotnetdevelopmentinfrastructu...
[[Notebook>#je91701c]]のセルに記述可能。
**Docsのクイック スタート [#qd3c3cb0]
-[[参考>#j501dd8e]]中のクイック スタート。
-Docsの説明が雑なので以下、注釈を加えてみる。
***Parquetファイル [#q83dd008]
-CSVやTSVファイルのような行指向ファイル形式~
に対し効率的で高性能な列指向ストレージ形式。
-ダウンロード先がイマイチ不明なので、以下から取得する。~
https://github.com/Teradata/kylo/tree/master/samples/samp...
-先ずは、[[Jupyter Notebook>Azure DatabricksのNotebook#p8...
--読込
parquet_df = spark.read.parquet("path/to/userdata1.parqu...
--表示
parquet_df.show()
--結果
+-------------------+---+----------+---------+----------...
| registration_dttm| id|first_name|last_name| ...
+-------------------+---+----------+---------+----------...
|2016-02-03 16:55:29| 1| Amanda| Jordan| ajorda...
...
-一応、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()
--結果~
Displaying top 10 rows:
上記が10行に絞られた結果
***[[Azureストレージ>Azureのストレージ]]へアクセス [#l015...
その次に、[[Azureストレージ>Azureのストレージ]]から読込ん...
-[[Parquetファイル>#q83dd008]]を[[Azureストレージ>Azureの...
--[[Azureストレージ>Azureのストレージ]]作成のスクリプトは...
--[[Parquetファイル>#q83dd008]]はポータルからアップロード...
-[[Jupyter Notebook>Azure DatabricksのNotebook#p84bd61d]]...
--実行
from pyspark.sql import SparkSession
spark: SparkSession = SparkSession.builder.appName("Simp...
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' % ...
spark.conf.set('fs.azure.sas.%s.%s.blob.core.windows.net...
print('Remote blob path: ' + wasbs_path)
parquet_df = spark.read.parquet(wasbs_path)
parquet_df.show()
--結果~
ライブラリが足りないもよう。
Class org.apache.hadoop.fs.azure.NativeAzureFileSystem$S...
***[[Azure Databricks]]上で実行 [#m6c58006]
ライブラリが足りないので、[[Azure Databricks]]上で実行し...
-前提
--ワークスペースの作成(作成のスクリプトは[[コチラ>#gd9a5...
--クラスタの作成(作成の手順は[[コチラ>#med3ca62]]
--Notebookの作成する(作成の手順は[[コチラ>#je91701c]]
-[[先程のコード>#l015e466]]を実行する。
--Clusterを開始する。
---左上のドロップダウン・リストから作成したClusterを選択...
---そこから[Start Cluster]を選択して押下する。
--(先程の)コードをセルに貼り付ける。
--Shift + Enter キーを使用してコードを実行
--無事、実行されたことを確認したら~
以下のようにコードを変更して再実行する。
---変更前
parquet_df.show()
---変更後
display(parquet_df)
--データの視覚的な表現を作成する。~
displayで表示された形式の出力の一番下から、~
[Plot Options]をクリックし、以下のようにする。
#ref(無題.png,left,nowrap,グラフ表示,50%)
--Clusterを停止する。
---Clusterを開始した際に使ったドロップダウン・リストからC...
---Cluster管理画面で、Terminate or Deleteを選択する。
---課金がアレなので、~
・PoCならリソース・グループごと削除しておいた方が良い。~
・と言うのも、リソース・グループを見るとClusterのリソース...
**[[PySparkチュートリアル>https://dotnetdevelopmentinfras...
[[クイック スタート>#qd3c3cb0]]も終わったので、[[PySpark...
***[[on Jupyter Notebook on Docker>https://dotnetdevelopm...
***[[DataFrameに対する様々な操作>https://dotnetdevelopmen...
**静的ファイルで構造化ストリーミングをエミュレート [#gd02...
[[databricks.comのApache Spark チュートリアル(ストリーミ...
***環境準備 [#t647655e]
作成のスクリプトは以下
-送信:なし
-受信:[[Azure Databricks>#gd9a5060]]
***エミュレート [#c2e0e166]
readStreamでinputPathをmaxFilesPerTriggerで読む...みたい...
from pyspark.sql.functions import *
# Similar to definition of staticInputDF above, just usi...
streamingInputDF = (
spark
.readStream
.schema(jsonSchema) # Set the schema o...
.option("maxFilesPerTrigger", 1) # Treat a sequence...
.json(inputPath)
)
# Same query as staticInputDF
streamingCountsDF = (
streamingInputDF
.groupBy(
streamingInputDF.action,
window(streamingInputDF.time, "1 hour"))
.count()
)
***出力方法 [#r4ddc25c]
インタラクティブにやる場合、
-in-memoryテーブルに名前を付け、~
query = (
streamingCountsDF
.writeStream
.format("memory") # memory = store in-memory ...
.queryName("counts") # counts = name of the in-m...
.outputMode("complete") # complete = all the counts...
.start()
)
-「%sql」のマジックコマンドでセレクトする。
%sql select action, date_format(window.end, "MMM-dd HH:m...
みたいな方法になる。
**[[EventHubsのKafka>Azure Event Hubsチュートリアル#od841...
[[PySparkチュートリアル>https://dotnetdevelopmentinfrastr...
(コンテナのJupyter NotebookからコンテナのKafkaに接続でき...
Azure Databricksでリトライ。
***環境準備 [#n3bec3ce]
作成のスクリプトは以下
-送信:[[Azure Event Hubs>Azure Event Hubsチュートリアル#...
-受信:[[Azure Databricks>#gd9a5060]]
***送受信 [#f5fa0a25]
-[[純正クライアントを使用した送信処理>Azure Event Hubsチ...
-Azure Databricksで受信する。
--[[Azure DatabricksのCluster・Notebookを作成>#m6c58006]]...
--[[PySparkチュートリアル中の構造化ストリーミング>https:/...
[[入力部分をKafka化>https://dotnetdevelopmentinfrastructu...
---ただし、[[Event HubsのKafkaエンドポイント風>.NET for A...
---パラメタは[[純正クライアントを使用した受信処理>Azure E...
(詳細不明だが、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.wind...
eh_sasl = 'kafkashaded.org.apache.kafka.common.security....
windowSize = 10
slideSize = 10
if slideSize > windowSize:
print("<slideSize> must be less than or equal to <wi...
windowDuration = '{} seconds'.format(windowSize)
slideDuration = '{} seconds'.format(slideSize)
spark = SparkSession\
.builder\
.appName("StructuredNetworkWordCountWindowed")\
.getOrCreate()
# Create DataFrame representing the stream of input line...
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() ...
words = lines.select(
explode(split(lines.value, ' ')).alias('word'),
lines.timestamp
)
# Group the data by window and word and compute the coun...
windowedCounts = words.groupBy(
window(words.timestamp, windowDuration, slideDuratio...
words.word
).count().orderBy('window')
# Start running the query that prints the windowed word ...
query = windowedCounts\
.writeStream\
.outputMode('complete')\
.format('console')\
.option('truncate', 'false')\
.start()
query.awaitTermination()
-構造化ストリーミングでは(?)、~
consoleへの出力が確認できなかったので、~
インタラクティブにやる場合、
--最後を、以下のように変更し、~
(in-memoryテーブルに名前つけて)
# Start running the query that prints the windowed word ...
query = windowedCounts\
.writeStream\
.format("memory")\
.queryName("counts")\
.outputMode("complete")\
.start()
# query.awaitTermination()
--%sqlのマジックコマンドでセレクトする。
%sql select * from counts
**その他 [#x1c99a7c]
***KcMichael - Qiita [#a81fca8a]
[[参考>#j501dd8e]]中の...
***SQL Serverと組み合わせるチュートリアル [#qb0fbdbe]
[[参考>#j501dd8e]]中の「...ノートブックから...SQL Server ...
**古い? [#g2030b5a]
ちょっと古いのか?アカンやつ。
***Azure Databricksを使ってみた [#hf19908a]
[[参考>#j501dd8e]]中の「Azure Databricksを使ってみた」
...ちと古いし、他にも色々アレなので、パス。
***[[Azure Data Lake]] のチュートリアル [#gffec173]
[[参考>#j501dd8e]]中の
>「チュートリアル:Azure Data Lake Storage Gen2、Azure Dat...
...フライト データのダウンロードができない。
**参考 [#w15adae9]
[[Microsoft Docs>#h5fc34ee]]、[[Qiita>#e44d9b2a]]
*.NET [#q1122d96]
(.NET for Apache Spark)
-[[.NET for Apache SparkガイドのGet started in 10 minutes...
-ビルドしたモノをZIPして、spark-submitするのでローカル環...
**Get started in 10 minutes [#ta98bbdc]
-[[以前開発したサンプルの動作確認を行い>.NET for Apache S...
-実際に発行&アップロード&実行してみる。
***アプリの発行 [#y0b75f0a]
-ターゲットはubuntu
>dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.16...
-publishしたものをpublish.zipにまとめる。~
Windowsなので、[[PowerShell]]を使用してみる。
powershell compress-archive publish ..\publish.zip
***依存関係のダウンロード [#n418b549]
-依存関係ファイルをダウンロードする。
>※ URL : https://github.com/dotnet/spark/tree/master/depl...
-Microsoft.Spark.Worker~
ローカル実行で使用したものに対応するLinux版の*.tar.gz~
https://github.com/dotnet/spark/releases/download/v1.0.0/...
-install-worker.sh~
Apache Spark クラスタに Worker バイナリをインストール
-db-init.sh
--ワーカーとアプリの依存関係を Databricks Spark クラスタ...
--DOTNET_SPARK_RELEASEを修正するという手順があるが、コレ...
>※ *.shの行の終わりは Unix 形式 (LF) であることを確認~
***ファイルのアップロード [#uee92a05]
次のファイルをアップロードする
-アプリケーション
--一式
---publish.zip~
発行したアプリ
---input.txt~
自分は、input.txtをプロジェクト出力に含めていたのでpublis...
カレント・ディレクトリが異なるため別途アップロードが必要...
Microsoft.Spark.JvmException: org.apache.spark.sql.Analy...
---microsoft-spark-2-4_2.11-1.0.0.jar~
ローカル実行で使用したもの(publish中で[[使用したバージョ...
--dbfsにアップロード~
[[Databricks CLI>#bf24b43b]]を使って。
databricks fs cp input.txt dbfs:/input.txt
databricks fs cp publish.zip dbfs:/spark-dotnet/publish....
databricks fs cp microsoft-spark-2-4_2.11-1.0.0.jar dbfs...
※ input.txtがZIPに同梱されていても、カレント・ディレクト...
-[[依存関係>#n418b549]]
--[[前述>#n418b549]]の一式
---Microsoft.Spark.Worker
---install-worker.sh
---db-init.sh
--dbfsにアップロード~
[[Databricks CLI>#bf24b43b]]を使って。
databricks fs cp Microsoft.Spark.Worker.netcoreapp3.1.li...
databricks fs cp install-worker.sh dbfs:/spark-dotnet/in...
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-too...
***ジョブを作成して実行 [#a1355971]
-ジョブを作成する。~
[[ワークスペース(Databricks のポータル・サイト)>#ye161f...
--左メニュー中の [Job] アイコンを選択し、
--次に[+ Create Job] を選択して、Job名を入力、
--以下、UIが変更されているので、以下を参考にする。
---ジョブ - Azure Databricks | Microsoft Docs~
https://docs.microsoft.com/ja-jp/azure/databricks/jobs
-spark-submitの構成~
初めに、[Task]の[Type]を[[[Notebook>#je91701c]]]から[Spar...
-クラスタ構成の設定~
次に、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 が構成さ...
-パラメタの設定~
--パラメタに次の文字列を貼り付ける。
["--class","org.apache.spark.deploy.dotnet.DotnetRunner"...
--自分は、
---mySparkApp → MySparkApp としていたので、その様に変更し...
---[[ 実行に必要となる引数>.NET for Apache Sparkチュート...
>.NET for Apache Spark ジョブを Databricks に送信する | M...
https://docs.microsoft.com/ja-jp/dotnet/spark/how-to-guid...
---...と言う事で、実際、パラメタには、次の文字列を貼り付...
["--class","org.apache.spark.deploy.dotnet.DotnetRunner"...
--[Create]を押下する。
-アプリの実行~
--ここで、[[Initスクリプト>#a1355971]]が実行される。
--ジョブのクラスタが作成されるまで数分かかる。~
(リソース・グループを確認するとクラスタのリソース増が確...
--Job名の横にある [Run Now] ボタンをクリックする。
--Jobで構成した Spark クラスタでJobが実行される。
--実行結果は、Completed Runs表中のSpark列に表示されるLogs...
#ref(無題2.png,left,nowrap,実行の結果,70%)
-リソースのクリーンアップ
--リソース・グループを確認するとクラスタのリソース減が確...
--必要に応じて、(ワークスペースとクラスタの)リソース・...
***参考 [#h06a7649]
-[[Azure HDInsightとの比較>Azure HDInsight#n2b1fb3a]]~
>[[クラスタの作成中のdb-init.sh 設定+アプリの実行>#a1355...
>≒ [[スクリプト アクション実行>Azure HDInsight#y790895b]]
-エラー
--1~
[[Azureのクォータ]]制限を解除する。
---Cluster:~
Driver: Standard_DS3_v2,
Workers: Standard_DS3_v2,
8 workers, 5.5 LTS (includes Apache Spark 2.4.3, Scala 2...
---Message:~
Unexpected failure while waiting for the cluster (...) t...
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 exce...
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
https://aka.ms/ProdportalCRP/?#create/Microsoft.Suppor...
by specifying parameters listed in the 'Details' secti...
Pleas ... ***WARNING: message truncated. Skipped 964 b...
---クォータ制限を解除する。~
以下のクォータを32に設定する。~
・Total Regional vCPUsのクォータ~
・Standard_DS3_v2 → DSv2 シリーズ(Standard DSv2 Promo Fam...
--2~
input.txtの扱いについて、
---[[ZIP同梱していても、別途アップロードが必要になる。>#u...
---[[また、コマンド引数でファイル名を渡している場合、spar...
**上記と同様に行ってみる例 [#m420e622]
ワークスペースをクリーンナップするか新規作成する必要があ...
1つのバッチにまとめて、コマンドライン引数で切り替えるの...
***[[バッチ処理>.NET for Apache Sparkチュートリアル#l7b48...
-アプリ
--publish.zipの発行とアップロード
cd ...\DotNet4ApacheSpark\mySparkBatchApp\mySparkBatchApp
dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.16....
cd ...\mySparkBatchApp\bin\Release\netcoreapp3.1\ubuntu....
powershell compress-archive publish ..\publish.zip
cd ..
databricks fs rm dbfs:/spark-dotnet/publish.zip
databricks fs cp publish.zip dbfs:/spark-dotnet/publish....
--projects_smaller.csvのアップロード
databricks fs cp projects_smaller.csv dbfs:/projects_sma...
-spark-submitのパラメタ設定
["--class","org.apache.spark.deploy.dotnet.DotnetRunner"...
-エラー~
何故か、最後のDataFrame.Showでエラーになって~
4つ目の結果セットが表示されなかった(原因不明)。
***[[構造化ストリーミング>.NET for Apache Sparkチュートリ...
未実施
***[[ML.NETでの感情分析>.NET for Apache Sparkチュートリア...
未実施
*Java [#re2bf642]
可能らしいがサンプルが無いのは、[[Scala>#m5f129dc]]でやる...
**... [#ab4244b8]
*参考 [#j501dd8e]
-Azure Databricksを使ってみた – ナレコムAzureレシピ | AI...
https://azure-recipe.kc-cloud.jp/2018/08/azure-databricks/
**databricks.com [#k666624d]
Apache Spark チュートリアル: Apache Spark チュートリアル...
-はじめに~
https://databricks.com/jp/spark/getting-started-with-apac...
-クイックスタート~
https://databricks.com/jp/spark/getting-started-with-apac...
-DATAFRAME~
https://databricks.com/jp/spark/getting-started-with-apac...
-DATASET~
https://databricks.com/jp/spark/getting-started-with-apac...
-機械学習~
https://databricks.com/jp/spark/getting-started-with-apac...
-ストリーミング~
https://databricks.com/jp/spark/getting-started-with-apac...
-次のステップ~
https://databricks.com/jp/spark/getting-started-with-apac...
**microsoft.com [#bbd920d1]
***Scala [#y4d4dbfd]
-チュートリアル
--Azure Databricks を使用してデータの抽出、変換、読み込み...
https://docs.microsoft.com/ja-jp/azure/databricks/scenari...
--Event Hubs を使用してデータを Azure Databricks にストリ...
https://docs.microsoft.com/ja-jp/azure/databricks/scenari...
--Azure Databricks を使用したストリーミング データに対す...
https://docs.microsoft.com/ja-jp/azure/databricks/scenari...
***Python (PySpark) [#h5fc34ee]
-クイック スタート
--Azure portal を使用して Azure Databricks ワークスペース...
https://docs.microsoft.com/ja-jp/azure/databricks/scenari...
--PowerShell を使用して Azure Databricks ワークスペースを...
https://docs.microsoft.com/ja-jp/azure/databricks/scenari...
-チュートリアル
--Azure Databricks ノートブックから~
仮想ネットワーク内の SQL Server Linux Docker コンテナーの...
https://docs.microsoft.com/ja-jp/azure/databricks/scenari...
--Azure Data Lake Storage Gen2、Azure Databricks、および ...
https://docs.microsoft.com/ja-jp/azure/storage/blobs/data...
***Getting Started [#a53c1d8d]
-Azure Databricks - Workspace > Apache Spark の概要~
https://docs.microsoft.com/ja-jp/azure/databricks/getting...
--Apache Spark を使ってみる~
https://docs.microsoft.com/ja-jp/azure/databricks/getting...
--DataFrames のチュートリアル~
https://docs.microsoft.com/ja-jp/azure/databricks/getting...
--Datasets のチュートリアル~
https://docs.microsoft.com/ja-jp/azure/databricks/getting...
--MLlib を使用した機械学習のチュートリアル~
https://docs.microsoft.com/ja-jp/azure/databricks/getting...
--[[構造化ストリーミングのチュートリアル>#ib347719]]
***Perform Data Science - Learn [#o3f4dbe8]
-Azure Databricks を使用してデータ サイエンスを実行する~
https://docs.microsoft.com/ja-jp/learn/paths/perform-data...
--Azure Databricks の説明~
https://docs.microsoft.com/ja-jp/learn/modules/describe-a...
---Azure Databricks について説明する
---ワークスペースとクラスターを作成する
---ノートブックを理解する
---演習: ノートブックを操作する
--Spark アーキテクチャの基礎~
https://docs.microsoft.com/ja-jp/learn/modules/spark-arch...
---Azure Databricks の Spark クラスターのアーキテクチャに...
---Spark ジョブのアーキテクチャについて理解する
--Azure Databricks でデータの読み取りと書き込みを行う~
https://docs.microsoft.com/ja-jp/learn/modules/read-write...
---CSV 形式でデータを読み取る
---JSON 形式でデータを読み取る
---Parquet 形式でデータを読み取る
---テーブルとビューに格納されているデータを読み取る
---データを書き込む
---演習: データの読み取りと書き込みを行う
--Azure Databricks でデータフレームを操作する~
https://docs.microsoft.com/ja-jp/learn/modules/work-dataf...
---データフレームについて説明する
---一般的なデータフレーム メソッドを使用する
---display 関数を使用する
---演習: 個別の記事
--ユーザー定義関数を操作する~
https://docs.microsoft.com/ja-jp/learn/modules/work-with-...
---ユーザー定義関数を作成する
---演習: ユーザー定義関数を使用したETL操作を実行する
--Delta Lake の構築とクエリ~
https://docs.microsoft.com/ja-jp/learn/modules/build-quer...
---オープンソースの Delta Lake の説明
---演習: 基本的な Delta Lake 機能の使用
---Azure Databricks によって Delta Lake を管理する方法に...
---演習: Delta Lake Time Machine を使用して最適化を実行する
--Azure Databricks を使用した機械学習の実行~
https://docs.microsoft.com/ja-jp/learn/modules/perform-ma...
---機械学習を理解する
---演習: モデルをトレーニングし、予測を作成する
---探索的データ分析を使用してデータを理解する
---演習: 探索的データ分析を実行する
---機械学習ワークフローについて説明する
---演習: 機械学習のベースライン モデルを構築して評価する
--機械学習モデルのトレーニング~
https://docs.microsoft.com/ja-jp/learn/modules/train-mach...
---データセットの特徴量化を実行する
---演習: データセットの特徴量化を終了する
---回帰モデリングを理解する
---演習: 回帰モデルを構築して解釈する
--Azure Databricks で MLflow を操作する~
https://docs.microsoft.com/ja-jp/learn/modules/work-with-...
---MLflow を使用して実験を追跡し、メトリックをログ記録し...
---演習: MLflow を操作して、実験のメトリック、パラメータ...
--ハイパーパラメーターのチューニングによるモデル選択の実行~
https://docs.microsoft.com/ja-jp/learn/modules/perform-mo...
---モデルの選択とハイパーパラメーターのチューニングについ...
---演習: ハイパーパラメーターをチューニングして最適なモデ...
--分散型トレーニングのための Horovod によるディープ ラー...
https://docs.microsoft.com/ja-jp/learn/modules/deep-learn...
---Horovod を使用してディープ ラーニング モデルをトレーニ...
---Petastorm を使用して、分散型モデル トレーニング用に Ho...
---演習: ディープ ラーニング モデルをトレーニングするため...
--[[Azure Machine Learning を操作してサービス モデルをデ...
***構造化ストリーミング [#ib347719]
-構造化ストリーミング~
https://docs.microsoft.com/ja-jp/azure/databricks/spark/l...
--デモ ノートブック~
https://docs.microsoft.com/ja-jp/azure/databricks/spark/l...
--運用環境での構造化ストリーミング~
https://docs.microsoft.com/ja-jp/azure/databricks/spark/l...
--構造化ストリーミングの例~
https://docs.microsoft.com/ja-jp/azure/databricks/spark/l...
-チュートリアル~
https://docs.microsoft.com/ja-jp/azure/databricks/getting...
--デモ Scalaノートブック~
https://docs.microsoft.com/ja-jp/azure/databricks/_static...
--デモ Pythonノートブック~
https://docs.microsoft.com/ja-jp/azure/databricks/_static...
***Azure Machine Learning [#ybe88a83]
-Azure Machine Learning を操作してサービス モデルをデプロ...
https://docs.microsoft.com/ja-jp/learn/modules/work-with-...
-AutoML と Azure Databricks を使用して開発する~
https://docs.microsoft.com/ja-jp/azure/machine-learning/h...
**Qiita [#pba8f8ab]
***Scala [#g377cc6b]
***Python (PySpark) [#e44d9b2a]
-KcMichael~
https://qiita.com/KcMichael
--Azure Databricks:
---1. リソースの作成~
https://qiita.com/KcMichael/items/eb17285a46bda68f9c64
---2. Databricksの基本事項~
https://qiita.com/KcMichael/items/34902eedf9270059c041
---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
---4. PySpark基本操作~
https://qiita.com/KcMichael/items/8b1d51ac0e9f64633853
----
Tags: [[:クラウド]], [[:ビッグデータ]], [[:Azure]]
ページ名: