ノートブックの分離

ノートブックの分離とは、ノートブック間の変数とクラスの可視性を指します。 Databricks では、次の 2 種類の分離がサポートされています。

  • 変数とクラスの分離

  • セッション分離Spark

同じクラスターに接続されているすべてのノートブックは同じクラスター VM 上で実行されるため、Spark セッション分離を有効にしても、クラスター内でのユーザーの分離は保証されません。

変数とクラスの分離

変数とクラスは、現在のノートブックでのみ使用できます。 たとえば、同じクラスターにアタッチされた 2 つのノートブックで、同じ名前の変数とクラスを定義できますが、これらのオブジェクトは異なります。

同じクラスターにアタッチされているすべてのノートブックに表示されるクラスを定義するには、 パッケージ セルでクラスを定義します。その後、アタッチされた Scala または Java ライブラリ内のクラスにアクセスするのと同じ完全修飾名を使用してクラスにアクセスできます。

セッション分離 Spark

クラスターにアタッチされているすべてのノートブックには、 SparkSessionを表す spark という名前の事前定義された変数があります。SparkSession は、Spark APIs を使用したり、ランタイム構成を設定したりするためのエントリ ポイントです。

Spark セッションの分離は、デフォルトによって有効になります。 また、グローバル一時ビューを使用して、ノートブック間で一時ビューを共有することもできます。CREATE VIEWを参照してください。Spark セッションの分離を無効にするには、Spark 構成spark.databricks.session.sharetrue に設定します。

重要

true spark.databricks.session.share に設定すると、ストリーミングノートブックセルとストリーミングジョブの両方で使用されるモニタリングが中断されます。 具体的には:

  • ストリーミングセルのグラフは表示されません。

  • ジョブは、ストリームが実行されている限りブロックされません (ジョブは "正常に" 終了し、ストリームを停止します)。

  • ジョブ内のストリームは、終了についてモニターされません。 代わりに、手動で awaitTermination()を呼び出す必要があります。

  • ストリーミングDataFrames で 新しい視覚エフェクトを作成する という呼び出しは機能しません。

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