連線到資料來源並內嵌資料
您可以使用 Fabric 筆記本來連線到 Azure Blob 儲存體、Azure SQL Database 和其他儲存體選項中保留的資料。 藉由連線到資料來源,即使資料未儲存在 Fabric 資料湖存放庫中,您也可以在分析程序中使用資料。 您也可以使用 Spark 程式碼在將資料載入資料湖存放庫之前篩選和處理資料,讓您能夠使用 Spark 作為將資料擷取到 Fabric 分析環境的強大工具。
連線至 Azure Blob 儲存體
下列 PySpark 程式碼會連線到 Azure Blob 儲存體中保留的資料、將資料讀入 DataFrame,然後顯示資料。
# Azure Blob Storage access info
blob_account_name = "azureopendatastorage"
blob_container_name = "nyctlc"
blob_relative_path = "yellow"
# blob_sas_token = "add your SAS token here"
# Construct the path for connection
wasbs_path = f'wasbs://{blob_container_name}@{blob_account_name}.blob.core.windows.net/{blob_relative_path}'
# WASBS path for connection including SAS token
# wasbs_path = f'wasbs://{blob_container_name}@{blob_account_name}.blob.core.windows.net/{blob_relative_path}?{blob_sas_token}'
# Read parquet data from Azure Blob Storage path
blob_df = spark.read.parquet(wasbs_path)
# Display the Azure Blob DataFrame
display(blob_df)
注意
此範例示範如何連線到 Azure 開放資料集中保留的資料,不需要 SAS 權杖。 若要連線到您自己的資料,您必須產生 SAS 權杖,並將其新增至註解中所指出適當位置的程式碼。
設定替代驗證
上述範例會連線到具有 SAS 權杖的來源資料,並將資料讀入 DataFrame。 視您的資料儲存位置而定,您可能需要使用不同的驗證類型,例如服務主體或 OAuth。 以下是使用服務主體連線到 Azure SQL Database 的範例:
# Azure SQL Database connection info
server_name = "your_server_name.database.windows.net"
port_number = 1433 # Default port number for SQL Server
database_name = "your_database_name"
table_name = "YourTableName" # Database table
client_id = "YOUR_CLIENT_ID" # Service principal client ID
client_secret = "YOUR_CLIENT_SECRET" # Service principal client secret
# Build the Azure SQL Database JDBC URL with Service Principal
jdbc_url = f"jdbc:sqlserver://{server_name}:{port_number};database={database_name};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;Authentication=ActiveDirectoryServicePrincipal"
# Properties for the JDBC connection
properties = {
"user": client_id,
"password": client_secret
}
# Read table from Azure SQL Database using Entra ID Service Principal
sql_df = spark.read.jdbc(url=jdbc_url, table=table_name, properties=properties)
# Display the Azure SQL dataframe
display (sql_df)
提示
如需使用 Microsoft Entra 驗證進行連線的詳細資訊,請參閱使用 Microsoft Entra 驗證進行連線。
將資料寫入資料湖存放庫檔案
連線到您的資料並將其載入 DataFrame 之後,您可以將其儲存到資料湖存放庫中。 例如,下列程式碼會以 Parquet 格式儲存 DataFrame,其支援結構化、半結構化和非結構化資料。 Parquet 具有最佳化的單欄式儲存結構,以及有效率的壓縮功能。
# Write dataframe to Parquet file format
parquet_output_path = "Files/your_folder/your_file_name"
df.write.mode("overwrite").parquet(parquet_output_path)
print(f"DataFrame has been written to Parquet file: {parquet_output_path}")
注意
Fabric 資料湖存放庫也支援其他檔案格式,包括分隔文字、JSON、Delta、Avro、ORC 和其他格式。
寫入 Delta 資料表
Delta 資料表是 Fabric 資料湖存放庫的主要功能,因為其支援 ACID 交易、交易記錄等等。 您可以透過筆記本擷取外部資料並將其載入至 Delta 資料表。 Delta 資料表是以 Parquet 為基礎,並新增記錄檔。 資料湖存放庫資料表會以 Delta 格式儲存,如 Fabric 使用者介面中資料表名稱旁的三角形 Delta (Δ) 圖示所指示。
下列程式碼會儲存 Delta 資料表:
# Write dataframe to Delta table
delta_table_name = "your_delta_table_name"
df.write.format("delta").mode("overwrite").saveAsTable(delta_table_name)
# Confirm load as Delta table
print(f"DataFrame has been written to Delta table: {delta_table_name}")
提示
深入了解在 Microsoft Fabric 中使用 Delta Lake 資料表中的 Delta 資料表。
最佳化 Delta 資料表寫入
Spark 是一種平行處理架構,資料會儲存在一或多個背景工作角色節點上,這表示其可針對大型資料妥善調整。 不過除非是受控,否則 Spark 可以儲存大量小型資料檔案,稱為小型檔案問題,這可能會降低查詢效能。 V 順序和最佳化寫入是 Fabric 中預設啟用的最佳化選項。
- V 順序,讓各種計算引擎的讀取速度更快且更有效率,例如 Power BI、SQL 和 Spark。 V 順序會在寫入時對 parquet 檔案套用特殊的排序、散發、編碼和壓縮。
- 最佳化寫入可藉由增加檔案大小以減少寫入的檔案數目,來改善效能和可靠性。 對於 Delta 資料表具有次佳或非標準檔案大小的案例,或可容忍額外寫入延遲的案例,此功能很有用。
提示
深入了解 Delta Lake 資料表最佳化和 V 順序。