9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Databricks extension for Visual Studio Code を試してみる

Last updated at Posted at 2023-01-27

はじめに

Databricksでは基本的にNotebook baseでの開発を中心としており、ローカルのIDEでの開発という観点では。。。という感じでした。この度Databricks for Visual Studio Codeが発表され、IDEでの開発もしやすくなったとのことなので早速試してみたいと思います。

こちらのマニュアルを参考にしております。詳細はマニュアルをご覧ください。
https://docs.databricks.com/dev-tools/vscode-ext.html

動画で確認したい方はこちらをご覧ください。
https://www.youtube.com/watch?v=jAXxViBI3Ho

どんな事ができるのか?

  • Visual Studio Codeで開発したローカルコードをリモートワークスペースと同期させ実行することができます。

  • Visual Studio Code からローカルの Python コードファイル (.py) および Python ノートブック (.py と .ipynb) を、リモートワークスペース内の自動化された Databricks ジョブとして実行します。

  • VSCode上からDatabricks Clusterを起動・シャットダウンできる。

  • Debugできる(databricks connectとの連携が必要)

利用要件

利用するには以下の環境条件を満たす必要があります。

Getting Started

  1. VSCode Marketplaceから"Databricks for Visual Studio Code"を検索してInstallします。

image.png

構成をセットアップする

RemoteのDatabricks環境と連携するために、以下をセットアップする必要があります。

1.Extension設定にて同期する先を選択します。(今回はWorkspaceを選択)

「Code」メニュー  -> 「基本設定」 -> 「設定」 -> 「Extension」 - 「Databricks」にて、以下の設定画面を開きます。
image.png

「Destination Type」にて、workspaceを選択します。(もちろん、Reposのままでも結構です)

2.Databricks構成情報のセットアップ

Databricks icon -> Configure Databricks にてセットアップ

Databricks CLIで作成したプロファイルを選択する

私の環境では4つのワークスペース用のプロファイルがあるので4つ出てきました。 ここで新規プロファイル作成も可能です。このプロファイルは、対象となるDatabricks Workspaceにアクセスするための情報が保存されてます。(Databricks CLI setupはこちら)

image.png

Clusterの選択

プロファイルを使って無事にWorkspaceと連携出来ると、左のペインにクラスターリストが表示されます。今回利用するクラスターをアタッチします。

image.png

ファイルの同期

ギアマークの左にある同期マークをクリックすると、ローカルのコードがDatabricks Workspace(もしくはRepos)と同期されます。
image.png

Databricks for Visual Studio Codeは、ローカルのVisual Studio CodeプロジェクトからリモートのDatabricksワークスペースにある関連リポジトリへのファイル変更の一方向の自動同期のみを実行するものです。詳細はこちらをご覧ください

同期されると、ワークスペース側に .ideというフォルダーが作成されております。
image.png

使ってみよう

1. python fileとして Databricks Cluster上で実行する

こちらのサンプルのPythonファイルを保存して実行してみます。

demo.py
from pyspark.sql import SparkSession
from pyspark.sql.types import *

spark = SparkSession.builder.getOrCreate()

schema = StructType([
  StructField('CustomerID', IntegerType(), False),
  StructField('FirstName',  StringType(),  False),
  StructField('LastName',   StringType(),  False)
])

data = [
  [ 1000, 'Mathijs', 'Oosterhout-Rijntjes' ],
  [ 1001, 'Joost',   'van Brunswijk' ],
  [ 1002, 'Stan',    'Bokenkamp' ]
]

customers = spark.createDataFrame(data, schema)
customers.show()

VSCodeの右上の実行ボタンを選択し、「Run File on Databricks」を実行する

image.png

実行結果が下のデバッグコンソールに出力されます。
image.png

2. Jobとして実行する

コードファイルを開いて、右上の実行ボタンから「Run File as Workflow on Databricks」を実行します。
image.png

VSCode上に Job実行結果が出力されます。
image.png

Databricks上でもジョブを確認できます。ちなみにクラスターは指定したクラスター上で実行されます。(新規ジョブクラスターが作られるわけでは無い)
image.png

3. Python NotebookをJobとして実行する

databricks notebookとして実行するには、.py ファイルの最初の行に # Databricks notebook source を追加します。またセルを追加するには、# COMMAND ---------- を追加します。

以下のサンプルコードをご利用ください。

demo-notebook.py
# Databricks notebook source

from pyspark.sql import SparkSession
from pyspark.sql.types import *

spark = SparkSession.builder.getOrCreate()

schema = StructType([
  StructField('CustomerID', IntegerType(), False),
  StructField('FirstName',  StringType(),  False),
  StructField('LastName',   StringType(),  False)
])

# COMMAND ----------

data = [
  [ 1000, 'Mathijs', 'Oosterhout-Rijntjes' ],
  [ 1001, 'Joost',   'van Brunswijk' ],
  [ 1002, 'Stan',    'Bokenkamp' ]
]

# COMMAND ----------
customers = spark.createDataFrame(data, schema)
customers.show()

Run File as Workflow on Databricksを実行します。
image.png

このようにノートブックを実行した際の結果が新規タブに表示されます。
image.png

4. Debug実行

Debug実行するためには、Databricks Connectをセットアップしなければいけません。
そちらについては、別の記事をご覧ください。
Databricks Extension for VSCodeでDebugがサポートされました

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?