LoginSignup
2
Organization

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

はじめに

Databricksでは基本的にNotebook baseでの開発を中心としており、ローカルのIDEでの開発という観点では。。。という感じでした。これまでにもDatabricks Connectdbxというものがありましたが、どちらかというとCI/CDを意識したものでした。この度Databricks for Visual Studio Codeが発表されましたので、早速試してみたいと思います。

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

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

どんな事ができるのか?

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

  • Visual Studio Codeで開発したローカルのPythonコードファイルを、リモートワークスペースのDatabricksクラスタ上で実行します。

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

利用要件

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

同期するためのWorkspace Repository作成

VSCode上で開発したコードを同期するためのRepositoryを作成します。こちらのリポジトリはRemote Git Repositoryと同期は取らないでください。

  1. 左のメニューの[Repos] - [Add Repo]
  2. [Create repo by cloning a Git repository] のチェックボックスを外す
  3. Repository Nameを入れてSubmitする

image.png

Getting Started

  1. Install Databricks for Visual Studio Code from Marketplace

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

image.png

構成をセットアップする

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

1. 作業フォルダーを開く

Visual Studio Code (File > Open Folder)にて、ローカルの作業フォルダーを指定します。無い場合は新規フォルダーを作成。

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

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

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

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

image.png

4. Clusterの選択

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

image.png

アタッチすると、起動や停止もコントロール出来ます。
image.png

5. Repository のセットアップ

ローカルのコードをWorkspace上と同期するため、先ほど作成したRepositoryをセットアップします。
Repositoryのギアマークをクリックすると、Workspace上のRepositoryがリストされるので、先ほど作成した「my-repo」を選択します。

image.png

ギアマークの左にある同期マークをクリックすると、リポジトリーとローカルフォルダーが同期されます。
image.png

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

使ってみよう

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

コードもワークスペースのRepositoryに同期されてました。
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

その他

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
What you can do with signing up
2