Databricks では、開発とデータ エンジニアリングにさまざまなプログラミング言語を使用できます。 この記事では、使用可能なオプション、これらの言語を使用できる場所、およびその制限について説明します。
推奨事項
Databricks では、新しいプロジェクトに Python と SQL が推奨されます。
- Python は、非常に一般的な汎用プログラミング言語です。 PySpark DataFrames を使用すると、テスト可能なモジュール型変換を簡単に作成できます。 Python エコシステムでは、さまざまなライブラリもサポートされており、ソリューションを拡張するための幅広いライブラリがサポートされています。
-
SQL は、データのクエリ、更新、挿入、削除などの操作を実行することで、リレーショナル データセットを管理および操作するための非常に一般的な言語です。 SQL は、バックグラウンドが主にデータベースまたはデータ ウェアハウスにある場合に適しています。 sql は、
spark.sql
を使用して Python に埋め込むこともできます。
次の言語ではサポートが制限されているため、Databricks では新しいデータ エンジニアリング プロジェクトには推奨されません。
- Scala は、Apache Spark™ の開発に使用される言語です。
- R は Databricks ノートブックでのみ完全にサポートされています。
言語のサポートは、データ パイプラインやその他のソリューションの構築に使用される機能によっても異なります。 たとえば、Lakeflow 宣言パイプラインでは Python と SQL がサポートされますが、ワークフローでは Python、SQL、Scala、Java を使用してデータ パイプラインを作成できます。
注
他の言語を使用して、Databricks と対話してデータのクエリを実行したり、データ変換を実行したりできます。 ただし、これらの相互作用は、主に外部システムとの統合のコンテキストにあります。 このような場合、開発者はほぼすべてのプログラミング言語を使用して、 Databricks REST API、 ODBC/JDBC ドライバー、 Databricks SQL コネクタ がサポートされている特定の言語 (Go、Python、Javascript/Node.js)、または Go や Rust などの Spark Connect 実装を持つ言語を介して Databricks と対話できます。
ワークスペース開発とローカル開発
ローカル コンピューター上の Databricks ワークスペースまたは IDE (統合開発環境) を使用してデータ プロジェクトとパイプラインを開発できますが、Databricks ワークスペースで新しいプロジェクトを開始することをお勧めします。 ワークスペースは Web ブラウザーを使用してアクセスでき、Unity カタログ内のデータに簡単にアクセスでき、Databricks Assistant などの強力なデバッグ機能と機能をサポートします。
Databricks ノートブックまたは SQL エディターを使用して、Databricks ワークスペースでコードを開発します。 Databricks ノートブックは、同じノートブック内でも複数のプログラミング言語をサポートしているため、Python、SQL、Scala を使用して開発できます。
Databricks ワークスペースでコードを直接開発する利点はいくつかあります。
- フィードバック ループの方が高速です。 書き込まれたコードを実際のデータですぐにテストできます。
- コンテキスト対応の組み込みの Databricks Assistant を使用すると、開発を高速化し、問題の解決に役立ちます。
- Databricks ワークスペースから直接ノートブックとクエリを簡単にスケジュールできます。
- Python 開発では、ワークスペース内の Python パッケージとしてファイルを使用して Python コードを正しく構造化できます。
ただし、IDE 内でのローカル開発には、次の利点があります。
- IDE には、ナビゲーション、コードリファクタリング、静的コード分析などのソフトウェア プロジェクトを操作するための優れたツールがあります。
- ソースの管理方法を選択できます。Git を使用する場合は、Git フォルダーを含むワークスペースよりも高度な機能をローカルで使用できます。
- サポートされている言語の範囲が広がります。 たとえば、Java を使用してコードを開発し、JAR タスクとしてデプロイできます。
- コード デバッグのサポートが強化されています。
- 単体テストを使用するためのより優れたサポートがあります。
言語選択の例
データ エンジニアリングの言語選択は、次のデシジョン ツリーを使用して視覚化されます。
Python コードの開発
Python 言語では、Databricks でファーストクラスのサポートが提供されています。 これを Databricks ノートブック、Lakeflow 宣言型パイプライン、ワークフローで使用して UDF を開発し、Python スクリプトおよびホイールとしてデプロイすることもできます。
Databricks ワークスペースで Python プロジェクトを開発する場合、ノートブックまたはファイルのいずれであっても、Databricks には、コード補完、ナビゲーション、構文検証、Databricks Assistant を使用したコード生成、対話型デバッグなどのツールが用意されています。 開発されたコードは、対話形式で実行したり、Databricks ワークフローまたは Lakeflow 宣言パイプラインとしてデプロイしたり、Unity カタログの関数としてデプロイしたりできます。 コードを 別々の Python パッケージ に分割して、複数のパイプラインまたはジョブで使用することで、コードを構造化できます。
Databricks には Visual Studio Code の拡張機能 が用意されており、JetBrains には PyCharm 用のプラグイン が用意されています。これにより、IDE で Python コードを開発し、コードを Databricks ワークスペースに同期し、ワークスペース内で実行し、 Databricks Connect を使用してステップ バイ ステップデバッグを実行できます。 開発されたコードは、 Databricks アセット バンドルを Databricks ジョブまたはパイプラインとして使用してデプロイできます。
SQL コードの開発
SQL 言語は、Databricks ノートブック内で使用することも、SQL エディターを使用して Databricks クエリとして使用することもできます。 どちらの場合も、開発者はコード補完や、コード生成と問題の修正に使用できるコンテキスト対応 Databricks Assistant などのツールにアクセスできます。 開発されたコードは、ジョブまたはパイプラインとしてデプロイできます。
Databricks ワークフローでは、ファイルに格納されている SQL コードを実行することもできます。 IDE を使用してこれらのファイルを作成し、ワークスペースにアップロードできます。 SQL のもう 1 つの一般的な用途は、 dbt (データ ビルド ツール) を使用して開発されたデータ エンジニアリング パイプラインです。 Databricks ワークフローでは、dbt プロジェクトの調整がサポートされています。
Scala コードの開発
Scala は Apache Spark™ の元の言語です。 それは強力な言語ですが、急な学習曲線があります。 Scala は Databricks ノートブックでサポートされている言語ですが、Scala のクラスとオブジェクトの作成方法と保守方法に関連するいくつかの制限があり、複雑なパイプラインの開発がより困難になる可能性があります。 通常、IDE は Scala コードの開発をより適切にサポートします。これにより、Databricks ワークフローの JAR タスクを使用してデプロイできます。
次のステップ
- Databricks での開発は、Databricks のさまざまな開発オプションに関するドキュメントのエントリ ポイントです。
- 開発者ツール ページでは、Databricks アセット バンドルや IDE 用プラグインなど、Databricks のローカルでの開発に使用できるさまざまな開発ツールについて説明します。
- Databricks ノートブックでコードを開発し、Databricks ノートブック を使用して Databricks ワークスペースで開発する方法について説明します。
- SQL エディターでクエリを記述し、データを探索します。 この記事では、Databricks SQL エディターを使用して SQL コードを操作する方法について説明します。
- Lakeflow 宣言型パイプラインの開発では、Lakeflow 宣言型パイプラインの開発プロセスについて説明します。
- Databricks Connect を使用すると、Databricks クラスターに接続し、ローカル環境からコードを実行できます。
- 開発を高速化し、コードの問題を解決するために Databricks Assistant を使用する方法について説明します。