Skip to content

MS_AzureDatabricksTutorial

nishi_74322014 edited this page Sep 1, 2026 · 1 revision

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

ツール

  • 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)**による認証が推奨されるようになっている。

Scala

Notebook のセルに記述可能。

ETL のチュートリアル

下記「参考」中の「... データの抽出、変換、読み込みを行う」

Event Hubs と組み合わせるチュートリアル

下記「参考」中の「Event Hubs を使用して... ストリーム配信する」

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

下記「参考」中の「Azure Databricks を使用したストリーミング データに対する感情分析」

移行メモ(アンカーの重複): 元ページでは上記 3 つの節が
すべて同じアンカー(#qb0fbdbe)を持っていた。
GitHub Wiki では見出しテキストからアンカーが生成されるため、
参照は「下記『参考』中の〜」という形に置き換えた。

Python (PySpark)

Notebook のセルに記述可能。
(PySpark の一般的な説明は
https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?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|    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 ストレージに配置

  • 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-azureazure-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 チュートリアル
https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?PySpark )を、
Azure Databricks で動かしてみる。

  • on Jupyter Notebook on Docker
  • DataFrame に対する様々な操作

静的ファイルで構造化ストリーミングをエミュレート

下記「参考 > databricks.com」の Apache Spark チュートリアル(ストリーミング)を、
Azure Databricks で動かしてみる。

環境準備

作成のスクリプトは以下

  • 送信:なし
  • 受信:上記「ワークスペース」

エミュレート

readStreaminputPathmaxFilesPerTrigger で読む... みたいな感じになる。

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

依存関係のダウンロード

ファイルのアップロード

次のファイルをアップロードする

  • アプリケーション

    • 一式

      • 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"]
    • 自分は、

      • mySparkAppMySparkApp としていたので、その様に変更した。

      • 実行に必要となる引数が存在する場合、
        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 Machine Learning

Qiita

Python (PySpark)

移行メモ(空の節): 「参考 > Qiita > Scala」は元ページでも
見出しのみで項目が無かったため、節ごと省いた。

本 Wiki 内


Tags: クラウド, ビッグデータ, Azure

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally