次の方法で共有


ノートブックの分離

ノートブックの分離とは、ノートブック間での変数とクラスの可視性を指します。 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.sharetrue に設定します。

重要

spark.databricks.session.share を true に設定すると、ストリーミング ノートブック セルとストリーミング ジョブの両方で使用される監視が無効になります。 具体的な内容は次のとおりです。

  • ストリーミング セル内のグラフは表示されません。
  • ストリームが実行されている限り、ジョブがブロックされることはありません ("正常に" 終了して、ストリームを停止します)。
  • ジョブ内のストリームが終了したかどうかの監視は行われません。 代わりに、awaitTermination() を手動で呼び出す必要があります。
  • ストリーミング DataFrames で [新しい視覚エフェクトを作成する] を呼び出しても機能しません。

他の言語のコマンドをトリガーするセル (つまり、%scala%python%r%sql を使用するセル) や他のノートブックを含めるセル (つまり、%run を使用するセル) は、現在のノートブックの一部です。 したがって、これらのセルは他のノートブック セルと同じセッションに属します。 対照的に、ノートブック ワークフローでは、分離された SparkSession を使用してノートブックが実行されます。このようなノートブックの中で定義される一時ビューは、他のノートブックからは可視ではありません