執行 Spark 程式碼
若要在 Microsoft Fabric 中編輯及執行 Spark 程式碼,您可以使用 Notebook,也可以定義 Spark 作業。
Notebooks
當您想要使用 Spark 來以互動方式探索及分析資料時,則可使用 Notebook。 Notebook 可讓您結合以多種語言撰寫的文字、影像和程式碼,建立可與他人共用和共同作業的互動式成品。
Notebook 是由一或多個資料格所組成,每個資料格都可以包含 Markdown 格式的內容或可執行的程式碼。 您可以在 Notebook 中以互動方式執行程式碼,並立即查看結果。
程式碼和 Markdown 儲存格
筆記本儲存格包含程式碼或 Markdown 文字,但不會同時包含。 若要將現有的程式碼儲存格轉換成 Markdown,請選取 [M]。若要將 Markdown 儲存格轉換成程式碼,請選取 <[/]>。
Markdown 儲存格包含文字工具列,可讓您格式化文字並新增影像。 將 Markdown 儲存格新增至筆記本的能力非常強大。 它可讓您新增程式碼的相關說明、記錄執行特定動作的原因、理由,以及您嘗試達成的目標。 此功能不僅可讓筆記本在稍後更有用,還能改善共同作業。
程式碼語言
PySpark (Python 的 Spark 特定實作)是 Microsoft Fabric 筆記本的預設語言,但您也可以選取 Scala (JAVA 型解譯語言)、Spark SQL 或 SparkR。 大部分的資料工程和分析工作負載都會使用 PySpark 和 Spark SQL 的組合來完成。
您可以變更筆記本的預設語言 (影響所有程式碼儲存格),也可以使用儲存格中的 magic 命令來覆寫該儲存格的預設語言。 例如,下列程式碼中的 %%sql
magic 命令會將儲存格的程式設計語言變更為 Spark SQL:
%%sql
SELECT YEAR(OrderDate) AS OrderYear,
SUM((UnitPrice * Quantity) + Tax) AS GrossRevenue
FROM salesorders
GROUP BY YEAR(OrderDate)
ORDER BY OrderYear;
使用 %%pyspark 將程式設計語言變更回 PySpark。 或使用 %%spark,將程式設計語言變更為 Scala。 儲存格右下角的下拉功能表也可以用來新增 magic 命令。
注意
Magic 命令區分大小寫。
筆記本中的程式碼通常會以互動方式執行,方法是執行個別資料格或執行筆記本中的所有資料格。 您也可以將筆記本排程為以非互動方式執行。
Spark 工作定義
如果您想要使用 Spark 來提取和轉換資料作為自動化流程的一部分,您可以定義 Spark 作業來依所需或基於排程執行指令碼。
若要設定 Spark 作業,請在工作區中建立 Spark 作業定義,並指定它應執行的指令碼。 您也可以指定參考檔 (例如,包含指令碼中使用的函式定義的 Python 程式碼檔案),以及對包含指令碼處理的資料的特定 Lakehouse 的參考。
您也可以指定命令列引數,這可讓您根據傳遞給指令碼的引數來改變指令碼的行為。 當相同 Spark 作業將用於多個內容時,此方法很有用 (例如,您可以使用單一指令碼將資料從檔案載入資料表,並在執行時變更檔案路徑和資料表名稱)。
排程筆記本和作業執行
您可以定義筆記本或 Spark 作業定義的排程,使其以特定間隔自動執行。 這種方法對於可編寫指令碼且不屬於更複雜資料擷取或處理工作負載的簡單自動化工作可能很有用。 在大部分的生產環境中,更為可管理的解決方案是將筆記本或 Spark 作業定義納入管線中,以便將其整合到更複雜的協調流程解決方案中。
注意
當您以互動方式在筆記本或 Spark 作業定義中執行程式碼時,程式碼會在目前登入使用者的安全性內容中執行。 使用排程執行時,程式碼會假設建立排程的使用者身分識別。 在管線中執行時,程式碼會使用擁有管線的使用者身分識別。
不論程式碼的執行方式為何,您都必須確定安全性內容中使用的身分識別有足夠的權限可存取程式碼所參考的任何資源,包括湖存放庫中的資料表或檔案。