筆記本隔離
筆記本隔離是指筆記本之間變數和類別的可見度。 Azure Databricks 支援兩種類型的隔離:
- 變數和類別隔離
- Spark 工作階段隔離
注意
Azure Databricks 會使用 叢集上設定的 存取模式來管理使用者隔離。
- 沒有共用 隔離:多個使用者可以使用相同的叢集。 使用者共用在叢集層級設定的認證。 不會強制執行任何資料存取控制。
- 單一使用者 :只有具名使用者可以使用叢集。 所有命令都會以該使用者的權限執行。 不會強制執行 Hive 中繼存放區中的資料表 ACL。 此存取模式支援 Unity 目錄。
- 共用 :多個使用者可以使用相同的叢集。 使用者彼此完全隔離,而且每個使用者都以自己的權限執行命令。 強制執行 Hive 中繼存放區中的資料表 ACL。 此存取模式支援 Unity 目錄。
變數和類別隔離
變數和類別僅適用于目前的筆記本。 例如,連結至相同叢集的兩個筆記本可以定義具有相同名稱的變數和類別,但這些物件是不同的。
若要定義連結至相同叢集 之所有筆記本可見 的類別,請在封裝資料格 中 定義 類別。 然後,您可以使用其完整名稱來存取類別,這與存取附加 Scala 或 JAVA 程式庫中的類別相同。
Spark 會話隔離
附加至叢集的每個筆記本都有一 spark
個名為 的預先定義變數,代表 SparkSession
。 SparkSession
是使用 Spark API 以及設定執行時間組態的進入點。
預設會啟用 Spark 會話隔離。 您也可以使用 全域 暫存檢視跨筆記本共用暫存檢視。 請參閱 CREATE VIEW 。 若要停用 Spark 會話隔離,請在 Spark 組態中將 設定為 spark.databricks.session.share
true
。
重要
設定 spark.databricks.session.share
true 會中斷串流筆記本資料格和串流作業所使用的監視。 具體而言:
- 串流資料格中的圖表不會顯示。
- 只要資料流程正在執行,作業就不會封鎖(它們只會「成功」完成,停止資料流程)。
- 作業中的資料流程不會受到監視以終止。 相反地,您必須手動呼叫
awaitTermination()
。 - 呼叫在 串流資料框架上建立新的視覺效果 無法運作。
觸發其他語言命令的儲存格(也就是使用 %scala
、 %python
、 %r
和 %sql
的儲存格,以及包含其他筆記本的儲存格(也就是使用 %run
的儲存格)是目前筆記本的一部分。 因此,這些儲存格與其他筆記本儲存格位於相同的會話中。 相反地,筆記本工作流程會 執行具有隔離 SparkSession
的筆記本,這表示這類筆記本中定義的暫存檢視在其他 筆記本中看不到 。