Databricks Connect for Scala
この記事では、Databricks Runtime13.3LTLTS以降のDatabricks Connectについて説明します。
Databricks ConnectIDEsIntelliJ IDEAを使用すると、 、ノートブックサーバー、その他のカスタムアプリケーションなどの一般的なDatabricks を クラスターに接続できます。「Databricks Connect とは」を参照してください。
この記事では、 IntelliJ IDEA と Scala プラグインを使用して Databricks Connect for Scala をすぐに使い始める方法について説明します。
- この記事の Python バージョンについては、「 Databricks Connect for Python」を参照してください。
- この記事の R バージョンについては、「 Databricks Connect for R」を参照してください。
チュートリアル
次のチュートリアルでは、 でプロジェクトを作成し、IntelliJ IDEA Databricks ConnectDatabricks Runtime13.3LTS 以降の をインストールし、Databricks から ワークスペースのコンピュートで簡単なコードを実行します。IntelliJ IDEAその他の情報と例については、「 次の手順」を参照してください。
必要条件
このチュートリアルを完了するには、以下の条件を満たす必要があります。
-
ターゲットDatabricksワークスペースとクラスターは、Databricks Connectのコンピュート構成の要件を満たしている必要があります。
-
クラスタリング ID が使用可能である必要があります。 クラスタリング ID を取得するには、ワークスペースでサイドバーの [コンピュート ] をクリックし、クラスタリングの名前をクリックします。 Web ブラウザーのアドレス バーで、URL の
clusters
とconfiguration
の間の文字列をコピーします。 -
Java Development Kit (JDK) が開発マシンにインストールされています。 Databricks では、JDK インストールのバージョンを Databricks クラスターの JDK バージョンと一致させることをお勧めします。 「要件」を参照してください。
JDK がインストールされていない場合、または開発用コンピューターに複数の JDK がインストールされている場合は、ステップ 1 の後半で特定の JDK をインストールまたは選択できます。クラスターで JDK バージョンより下または上の JDK インストールを選択すると、予期しない結果が生じたり、コードがまったく実行されなかったりする可能性があります。
-
IntelliJ IDEAがインストールされています。このチュートリアルは、IntelliJ IDEA Community Edition 2023.3.6 でテストされました。 IntelliJ IDEAの異なるバージョンまたはエディションを使用する場合、次の手順が異なる場合があります。
-
IntelliJ IDEA用の Scalaプラグイン がインストールされています。
ステップ 1: Databricks 認証を構成する
このチュートリアルでは 、Databricks OAuth ユーザーマシン間 (U2M) 認証 と Databricks 構成プロファイル を使用して、Databricks ワークスペースで認証します。 代わりに別の認証タイプを使用するには、「接続プロパティの設定」を参照してください。
OAuth U2M認証を設定するには、以下のようにDatabricksCLIが必要になります。
-
まだインストールされていない場合は、次のように Databricks CLI をインストールします。
タブ :::タブ-item[Linux, macOS] Homebrew を使用して、次の2つのコマンドを実行して Databricks CLI をインストールします。
Bashbrew tap databricks/tap
brew install databricks:::
タブ-item[Windows] winget、Chocolatey、または Windows Subsystem for Linux (WSL) を使用して、Databricks CLIをインストールできます。
winget
、Chocolatey、または WSL を使用できない場合は、この手順をスキップし、代わりにコマンド プロンプトまたは PowerShell を使用してソースから Databricks CLI をインストールする必要があります。
Chocolatey を使用した Databricks CLI のインストールは 試験段階です。
winget
を使用してDatabricks CLIをインストールするには、次の2つのコマンドを実行してから、コマンドプロンプトを再起動します。
winget search databricks
winget install Databricks.DatabricksCLI
Chocolateyを使用してDatabricks CLIをインストールするには、以下のコマンドを実行します。
choco install databricks-cli
WSLを使用してDatabricks CLIをインストールするには:
-
WSL を使用して
curl
とzip
をインストールします。詳細については、オペレーティングシステムのドキュメントを参照してください。 -
WSLを使用して、以下のコマンドを実行してDatabricks CLIをインストールします。
Bashcurl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
::: :::: 2. 次のコマンドを実行して、Databricks CLIがインストールされていることを確認します。これにより、Databricks CLIの現在のバージョンが表示されるので、そのバージョンが0.205.0以降であることを確認します。
databricks -v
databricks
を実行しても command not found: databricks
などのエラーが表示される場合、または databricks -v
を実行してバージョン番号 0.18 以下がリストされている場合は、マシンで Databricks CLI 実行可能ファイルの正しいバージョンが見つからないことを意味します。これを修正するには、 CLI インストールの確認を参照してください。
次のように、OAuth U2M認証を開始します。
-
Databricks CLI を使用して、ターゲット ワークスペースごとに次のコマンドを実行して、OAuth トークン管理をローカルで開始します。
次のコマンドで、
<workspace-url>
を Databricks ワークスペース インスタンスの URL に置き換えます (例:https://dbc-a1b2345c-d6e7.cloud.databricks.com
.Bashdatabricks auth login --configure-cluster --host <workspace-url>
-
Databricks CLI では、入力した情報を Databricks 構成プロファイルとして保存するように求められます。
Enter
キーを押して提案されたプロファイル名を受け入れるか、新規または既存のプロファイルの名前を入力します。同じ名前の既存のプロファイルは、入力した情報で上書きされます。 プロファイルを使用すると、複数のワークスペース間で認証コンテキストをすばやく切り替えることができます。既存のプロファイルの一覧を取得するには、別のターミナルまたはコマンド プロンプトで、 Databricks CLI を使用してコマンド
databricks auth profiles
を実行します。 特定のプロファイルの既存の設定を表示するには、databricks auth env --profile <profile-name>
コマンドを実行します。 -
Webブラウザで、画面の指示に従ってDatabricksワークスペースにログインします。
-
ターミナル プロンプトまたはコマンド プロンプトに表示される使用可能なクラスタリングの一覧で、上方向キーと下方向キーを使用してワークスペース内のターゲット クラスタリング Databricks を選択し、
Enter
キーを押します。 クラスタリングの表示名の任意の部分を入力して、使用可能なクラスタリングの一覧をフィルター処理することもできます。 -
プロファイルの現在の OAuth トークン値とトークンの今後の有効期限のタイムスタンプを表示するには、次のいずれかのコマンドを実行します。
databricks auth token --host <workspace-url>
databricks auth token -p <profile-name>
databricks auth token --host <workspace-url> -p <profile-name>
同じ
--host
値を持つプロファイルが複数ある場合、Databricks CLIが正しいOAuthトークン情報を見つけられるように--host
と-p
オプションを一緒に指定する必要がある場合があります。
ステップ 2: プロジェクトを作成する
-
IntelliJ IDEAを起動します。
-
メイン メニューの [ファイル] > [新しい > プロジェクト ] をクリックします。
-
プロジェクトに意味のある 名前を付け ます。
-
[ Location ] でフォルダアイコンをクリックし、画面の指示に従って新しい Scala プロジェクトへのパスを指定します。
-
[言語] で [ Scala ] をクリックします。
-
Build system で sbt をクリック。
-
[JDK ] ドロップダウンリストで、クラスターの JDK バージョンと一致する開発マシン上の JDK の既存のインストールを選択するか、[ JDK のダウンロード ] を選択し、画面の指示に従ってクラスター上の JDK バージョンと一致する JDK をダウンロードします。「要件」を参照してください。
クラスターで JDK バージョンより上または下の JDK インストールを選択すると、予期しない結果が生じたり、コードがまったく実行されなかったりする可能性があります。
-
sbt ドロップダウンリストで、最新バージョンを選択する。
-
Scala ドロップダウンリストで、クラスターのScalaバージョンと一致するScalaのバージョンを選択します。「要件」を参照してください。
クラスターで Scala バージョンより下または上の Scala バージョンを選択すると、予期しない結果が生じたり、コードがまったく実行されなかったりする可能性があります。
-
「 Scala の横にある 「ダウンロードソース 」ボックスにチェックが入っていることを確認します。
-
[Package prefix ] に、プロジェクトのソースのパッケージプレフィックス値 (
org.example.application
など) を入力します。 -
[ サンプル コードを追加 ] ボックスがオンになっていることを確認します。
-
作成 をクリックします。
手順 3: Databricks Connect パッケージを追加する
-
新しい Scala プロジェクトを開いた状態で、 Project ツールウィンドウ ( [View] (表示) > Tool Windows] (ツールウィンドウ) > Project ) で、 project-name > target にある
build.sbt
という名前のファイルを開きます。 -
ファイルの末尾に次のコードを追加します。これは、
build.sbt
のDatabricks Connect ライブラリの特定のバージョンに対するプロジェクトの依存関係を宣言し、クラスタリングのScala Databricks Runtimeバージョンと互換性があります。libraryDependencies += "com.databricks" % "databricks-connect" % "14.3.1"
を、クラスターの バージョンと一致する
14.3.1
Databricks Connectライブラリのバージョンに置き換えます。Databricks Runtimeたとえば、Databricks Connect 14.3.1 は Databricks Runtime 14.3 LTS と一致します。 Databricks Connect ライブラリのバージョン番号は、 Maven 中央リポジトリで確認できます。 -
Load sbt changes notification アイコンをクリックして、新しいライブラリの場所と依存関係で Scala プロジェクトを更新するよ。
-
IDE の下部にある
sbt
進行状況インジケータが消えるまで待ちます。sbt
ロード・プロセスが完了するまでに数分かかる場合があります。
ステップ4: コードを追加する
-
プロジェクト ツールウィンドウで、 [プロジェクト名] > src > main > scala にある
Main.scala
という名前のファイルを開きます。 -
ファイル内の既存のコードを次のコードに置き換え、設定プロファイルの名前に応じてファイルを保存します。
ステップ1の構成プロファイルが
DEFAULT
という名前の場合は、ファイル内の既存のコードを次のコードに置き換えて、ファイルを保存します。Scalapackage org.example.application
import com.databricks.connect.DatabricksSession
import org.apache.spark.sql.SparkSession
object Main {
def main(args: Array[String]): Unit = {
val spark = DatabricksSession.builder().remote().getOrCreate()
val df = spark.read.table("samples.nyctaxi.trips")
df.limit(5).show()
}
}ステップ 1 の構成プロファイルに
DEFAULT
という名前が付けられていない場合は、ファイル内の既存のコードを次のコードで置き換えます。 プレースホルダー<profile-name>
を手順 1 の構成プロファイルの名前に置き換え、ファイルを保存します。Scalapackage org.example.application
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig
import org.apache.spark.sql.SparkSession
object Main {
def main(args: Array[String]): Unit = {
val config = new DatabricksConfig().setProfile("<profile-name>")
val spark = DatabricksSession.builder().sdkConfig(config).getOrCreate()
val df = spark.read.table("samples.nyctaxi.trips")
df.limit(5).show()
}
}
ステップ 5: コードを実行する
- リモートのDatabricksワークスペースでターゲット・クラスターを開始します。
- クラスタリングが開始されたら、メイン メニューで [実行] > [実行 'Main] をクリックします。
- 実行 ツールウィンドウ( View > Tool Windows > 実行 ) のメインタブに 、
samples.nyctaxi.trips
テーブルの最初の5行が表示されます。
ステップ6: コードをデバッグします
- ターゲット クラスターがまだ実行されている状態で、上記のコードで
df.limit(5).show()
の横にある余白をクリックしてブレークポイントを設定します。 - メイン メニューで、[ Run (実行)] > [Debug 'Main' ('Main' のデバッグ)] をクリックします。
- デバッグ ・ツール・ウィンドウ ( 「ビュー」>「ツール」Windows >「デバッグ 」)の「 コンソール 」タブで、計算機 ( 「式の評価 」) アイコンをクリックします。
- 式
df.schema
を入力し、[ 評価 ] をクリックして DataFrame のスキーマを表示します。 - デバッグ ツールウィンドウのサイドバーで、緑色の矢印( プログラムの再開 )アイコンをクリックします。
- コンソール ウィンドウに、
samples.nyctaxi.trips
テーブルの最初の 5 行が表示されます。
次のステップ
Databricks Connectの詳細については、以下の記事を参照してください。
-
OAuth U2M 以外の Databricks 認証の種類を使用するには、「 接続プロパティの構成」を参照してください。
-
その他の簡単なコード例については、「 Databricks Connect for Scala のコード例」を参照してください。
-
複雑なコードの例については、GitHubのサイトにあるDatabricks Connectのアプリケーション例を参照してください。具体的には以下のとおりです。
-
Databricks Connect for Databricks Runtime 12.2 LTS 以前から Databricks Connect for Databricks Runtime 13.3 LTS 以降に移行するには、「 Databricks Connect for Scala への移行」を参照してください。
-
トラブルシューティングと制限事項に関する情報も参照してください。