ノートブックの分離
ノートブックの分離とは、ノートブック間での変数とクラスの可視性を指します。 Azure Databricks では、次の 2 種類の分離がサポートされます。
- 変数とクラスの分離
- Spark セッションの分離
注意
Azure Databricks は、クラスターで構成されたアクセス モードを使って、ユーザーの分離を管理します。
- 分離共有なし: 複数のユーザーが同じクラスターを使用できます。 ユーザーは、クラスター レベルで設定された資格情報を共有します。 データ アクセスの制御は適用されません。
- 単一ユーザー: 指定されたユーザーのみがクラスターを使用できます。 すべてのコマンドは、そのユーザーの権限で実行されます。 Hive メタストアのテーブル ACL は適用されません。 このアクセス モードでは、Unity Catalog がサポートされています。
- 共有: 複数のユーザーが同じクラスターを使用できます。 ユーザーは互いに完全に分離され、各ユーザーは自分の権限でコマンドを実行します。 Hive メタストアのテーブル ACL が適用されます。 このアクセス モードでは、Unity Catalog がサポートされています。
変数とクラスの分離
変数とクラスを使用できるのは、現在のノートブックの中に限られます。 たとえば、同じクラスターにアタッチされている 2 つのノートブックで同じ名前の変数やクラスを定義することもできますが、これらのオブジェクトは別のものです。
定義するクラスが、同じクラスターにアタッチされているすべてのノートブックから可視となるようにするには、そのクラスをパッケージ セルの中で定義します。 このクラスには、その完全修飾名を使用してアクセスできます。これは、アタッチされた Scala または Java ライブラリの中のクラスにアクセスする場合と同じです。
Spark セッションの分離
クラスターに接続されているすべてのノートブックには、SparkSession
を表す spark
という名前の定義済み変数があります。 SparkSession
は、Spark API を使用するための、およびランタイム構成を設定するためのエントリ ポイントです。
Spark セッションの分離は既定で有効になっています。 グローバル一時ビューを使用して一時ビューをノートブック間で共有することもできます。 「CREATE VIEW」を参照してください。 Spark セッションの分離を無効にするには、Spark 構成の中で spark.databricks.session.share
を true
に設定します。
重要
spark.databricks.session.share
を true に設定すると、ストリーミング ノートブック セルとストリーミング ジョブの両方で使用される監視が無効になります。 具体的な内容は次のとおりです。
- ストリーミング セル内のグラフは表示されません。
- ストリームが実行されている限り、ジョブがブロックされることはありません ("正常に" 終了して、ストリームを停止します)。
- ジョブ内のストリームが終了したかどうかの監視は行われません。 代わりに、
awaitTermination()
を手動で呼び出す必要があります。 - ストリーミング DataFrames で [新しい視覚エフェクトを作成する] を呼び出しても機能しません。
他の言語のコマンドをトリガーするセル (つまり、%scala
、%python
、%r
、%sql
を使用するセル) や他のノートブックを含めるセル (つまり、%run
を使用するセル) は、現在のノートブックの一部です。 したがって、これらのセルは他のノートブック セルと同じセッションに属します。 対照的に、ノートブック ワークフローでは、分離された SparkSession
を使用してノートブックが実行されます。このようなノートブックの中で定義される一時ビューは、他のノートブックからは可視ではありません。