MS_AzureDatabricksTutorial - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

Azure Databricksチュヌトリアル

抂芁

Azure Databricks のチュヌトリアル。

準備

契玄

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 になっおしたう。
    • 堎所リヌゞョン

    • 䟡栌レベル
      詊甚版を遞択できる。

    • 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 行目以降が
別コマンドずしお解釈される。

クラスタ

手順に埓い 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ボタンを抌䞋
    ※ この手順では、クォヌタ制限の問題は発生しなかった
    発生した堎合は䞋蚘「参考」を参照。

Notebook

  • 以䞋の手順に埓い Notebook を䜜成する。

    • New Notebookを抌䞋

    • 入力

      • Name : mynotebook
      • Language : Python
      • Cluster : mysparkcluster
    • Createボタンを抌䞋

  • Notebook 䞊でむンタラクティブ実行しおみる。

    • ハロヌ・ワヌルド颚
      PySpark を参照
  • 参考

ツヌル

  • Databricks CLI
    ファむル・システムにアクセスしたりする時に䜿う。

    • Python 3.6 以降が必芁

    • Python のむンストヌル
      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**による認蚌が掚奚されるようになっおいる。

Scala

Notebook のセルに蚘述可胜。

ETL のチュヌトリアル

䞋蚘「参考」䞭の「... デヌタの抜出、倉換、読み蟌みを行う」

Event Hubs ず組み合わせるチュヌトリアル

䞋蚘「参考」䞭の「Event Hubs を䜿甚しお... ストリヌム配信する」

感情分析のチュヌトリアル

䞋蚘「参考」䞭の「Azure Databricks を䜿甚したストリヌミング デヌタに察する感情分析」

移行メモアンカヌの重耇: 元ペヌゞでは䞊蚘 3 ぀の節が
すべお同じアンカヌ#qb0fbdbeを持っおいた。
GitHub Wiki では芋出しテキストからアンカヌが生成されるため、
参照は「䞋蚘『参考』䞭の〜」ずいう圢に眮き換えた。

Python (PySpark)

Notebook のセルに蚘述可胜。
PySpark の䞀般的な説明は
PySpark を参照

Docs のクむック スタヌト

  • 䞋蚘「参考」䞭のクむック スタヌト。
  • Docs の説明が雑なので以䞋、泚釈を加えおみる。

Parquet ファむル

  • 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|    [email protected]|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 ストレヌゞに配眮

  • 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 のリ゜ヌスが倧量に。

PySpark チュヌトリアル

䞊蚘「Docs のクむック スタヌト」も終わったので、
PySpark チュヌトリアル
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 化したスクリプトを以䞋に曞き出す。

      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) を䜿うず
ストリヌムの結果をそのたたセル䞊で可芖化できる。

その他

KcMichael - Qiita

䞋蚘「参考 > Qiita」を参照。

SQL Server ず組み合わせるチュヌトリアル

䞋蚘「参考」䞭の「... ノヌトブックから... SQL Server Linux Docker コンテナヌの
ク゚リを実行する」

叀い

ちょっず叀いのかアカンや぀。

Azure Databricks を䜿っおみた

䞋蚘「参考」䞭の「Azure Databricks を䜿っおみた」

... ちず叀いし、他にも色々アレなので、パス。

Azure Data Lake のチュヌトリアル

䞋蚘「参考」䞭の

「チュヌトリアル:Azure Data Lake Storage Gen2、Azure Databricks、および Spark」

... フラむト デヌタのダりンロヌドができない。

.NET

.NET for Apache Spark

Get started in 10 minutes

アプリの発行

  • タヌゲットは 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.sh
      • db-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
      
  • 参考

ゞョブを䜜成しお実行

  • ゞョブを䜜成する。
    ワヌクスペヌスDatabricks のポヌタル・サむトの

    • 巊メニュヌ䞭の Job アむコンを遞択し、

    • 次に + Create Job を遞択しお、Job 名を入力、

    • 以䞋、UI が倉曎されおいるので、以䞋を参考にする。

  • 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 から確認できる。

      実行の結果

  • リ゜ヌスのクリヌンアップ

    • リ゜ヌス・グルヌプを確認するずクラスタのリ゜ヌス枛が確認できる
    • 必芁に応じお、ワヌクスペヌスずクラスタのリ゜ヌス・グルヌプを削陀する。

参考

  • Azure HDInsight ずの比范

    䞊蚘「ゞョブを䜜成しお実行」の
    「クラスタの䜜成䞭の 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 ぀目の結果セットが衚瀺されなかった原因䞍明。

未実斜

未実斜

Java

可胜らしいがサンプルが無いのは、䞊蚘「Scala」でやるから

移行メモ未蚘述: 「Java」節は元ペヌゞでも芋出し「...」のみで、
本文が曞かれおいない。

参考

databricks.com

Apache Spark チュヌトリアル: Apache Spark チュヌトリアルを開始する

microsoft.com

Scala

Python (PySpark)

Getting Started

Perform Data Science - Learn

  • 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」

構造化ストリヌミング

Azure Machine Learning

Qiita

Python (PySpark)

移行メモ空の節: 「参考 > Qiita > Scala」は元ペヌゞでも
芋出しのみで項目が無かったため、節ごず省いた。

本 Wiki 内


Tags: クラりド, ビッグデヌタ, Azure

⚠ **GitHub.com Fallback** ⚠