捆綁連接器的無伺服器寫入選項

在無伺服器運算中,使用捆綁連接器寫入外部資料來源時,僅支援部分連接器選項。 以下表格列出每個連接器所支援的選項。

關於設定說明與範例,請參閱 Spark 資料來源。

PostgreSQL

在無伺服器運算上寫入 PostgreSQL 時,支援以下選項。

選項 Description
host PostgreSQL 伺服器的主機名稱。
port 連接埠號碼。 預設值:5432。
database 要連接的資料庫名稱。
connectTimeout 等待連線的最大時間(秒數)。 0 關閉暫停。
user 資料庫用戶名。
password 資料庫密碼。
dbtable 目標桌名。 支援結構限定名稱(例如, myschema.mytable)。
batchsize 每批要插入的排數。 預設值:1000。
numPartitions 用於平行寫入操作的 Spark 分割區數量。
queryTimeout 等待查詢完成的最大時間(秒數)。 0 關閉暫停。
isolationLevel 交易隔離層級:NONE、REPEATABLE_READREAD_COMMITTEDREAD_UNCOMMITTED或。SERIALIZABLE 預設值:READ_UNCOMMITTED。
truncate 如果 true,則在模式中截斷目標資料表 overwrite ,而非丟棄並重建。 預設值:false。
cascadeTruncate 如果 true,則會將截斷串接到帶有目標表外鍵參考的資料表。 預設值:false。

SQL Server

在無伺服器運算上寫入 SQL Server 時,支援以下選項。

選項 Description
host SQL Server 實例的主機名稱。
port 連接埠號碼。 預設值:1433。
database 要連接的資料庫名稱。
connectionTimeout 等待連線的最大時間(秒數)。 0 關閉暫停。
encrypt 如果 true,則會使用 TLS 加密客戶端與伺服器間所有傳送的資料。 預設值:false。
trustServerCertificate 若 true,則信任伺服器的 TLS 憑證而無需驗證。 僅限開發環境使用。 預設值:false。
debug 若 true,則能為連接器進行冗長除錯記錄。 預設值:false。
user 資料庫用戶名。
password 資料庫密碼。
authentication 驗證類型。 支援的值:SqlPassword、ActiveDirectoryPassword、ActiveDirectoryMSI。
dbtable 目標桌名。 支援結構限定名稱(例如, myschema.mytable)。
batchsize 每批要插入的排數。 預設值:1000。
numPartitions 用於平行寫入操作的 Spark 分割區數量。
queryTimeout 等待查詢完成的最大時間(秒數)。 0 關閉暫停。
isolationLevel 交易隔離層級:NONE、REPEATABLE_READREAD_COMMITTEDREAD_UNCOMMITTED或。SERIALIZABLE 預設值:READ_UNCOMMITTED。
truncate 如果 true,則在模式中截斷目標資料表 overwrite ,而非丟棄並重建。 預設值:false。

MySQL

在無伺服器運算上撰寫 MySQL 時,支援以下選項。

選項 Description
host MySQL 伺服器的主機名稱。
port 連接埠號碼。 預設值:3306。
database 要連接的資料庫名稱。
connectionTimeout 等待連線的最大時間(秒數)。 0 關閉暫停。
requireSSL 若 true,則需與伺服器進行 SSL 加密連線。 預設值:false。
useSSL 如果 true,則在伺服器支援時啟用該連線的 SSL。 預設值:false。
user 資料庫用戶名。
password 資料庫密碼。
dbtable 目標桌名。 支援結構限定名稱(例如, myschema.mytable)。
batchsize 每批要插入的排數。 預設值:1000。
numPartitions 用於平行寫入操作的 Spark 分割區數量。
queryTimeout 等待查詢完成的最大時間(秒數)。 0 關閉暫停。
isolationLevel 交易隔離層級:NONE、REPEATABLE_READREAD_COMMITTEDREAD_UNCOMMITTED或。SERIALIZABLE 預設值:READ_UNCOMMITTED。
truncate 如果 true,則在模式中截斷目標資料表 overwrite ,而非丟棄並重建。 預設值:false。
cascadeTruncate 如果 true,則會將截斷串接到帶有目標表外鍵參考的資料表。 預設值:false。

Snowflake

以下章節依功能分類,列出 Snowflake 連接器所支援的選項。

連線

以下選項可設定與 Snowflake 的連線並控制會話行為。

選項 Description
host Snowflake 帳號主機名稱(例如 <account>.snowflakecomputing.com)。
port 連接埠號碼。 預設值:443。
sfaccount Snowflake 帳號識別碼。
sfauthenticator 認證方式: snowflake (密碼)、 oauth (令牌)或 snowflake_jwt (金鑰對)。 預設值:snowflake。
networktimeout 網路操作的超時只需幾秒。
sftimezone 時間戳操作的時區(例如, America/New_York)。
client_session_keep_alive 若 true,則發送保持連線訊號,以防止長時間執行時的會話逾時。 預設值:false。
ocspfailopen 若 true,則允許在 OCSP 憑證驗證無法(失敗開啟模式)時繼續連線。 預設值:true。

Authentication

以下選項提供 在 中 sfauthenticator設定的認證方法的憑證。 當 Snowflake 階段透過雲端儲存寫入資料時,需要預備憑證(,temporary_aws_*awsaccesskey , temporary_azure_sas_token)。

選項 Description
sfuser Snowflake 用戶名。
sfpassword Snowflake 密碼。 當 sfauthenticator 是 snowflake時 。
sfToken OAuth 存取令牌。 當 sfauthenticator 是 oauth時 。
pem_private_key 用於金鑰對驗證的 PEM 格式私鑰。 當 sfauthenticator 是 snowflake_jwt時 。
temporary_aws_access_key_id S3 暫存的 AWS 存取金鑰 ID。 使用短命憑證時,這比起更優先 awsaccesskey 。
temporary_aws_secret_access_key S3 暫存的 AWS 秘密存取金鑰。
temporary_aws_session_token 用於 S3 暫存的 AWS 會話令牌。
temporary_azure_sas_token Temporary Azure SAS token for Azure Blob 儲存體 staging.
awsaccesskey AWS 存取金鑰用於 S3 暫存。
awssecretkey AWS 用於 S3 暫存的秘密金鑰。

Target

以下選項指定要寫入的 Snowflake 資料庫、結構、倉庫和資料表。

選項 Description
sfdatabase Snowflake 資料庫名稱。
sfschema Snowflake 架構名稱。
sfwarehouse Snowflake 虛擬倉庫用於查詢執行。
sfrole 這場會議的「雪花角色」。
dbtable 目標桌名。

寫入行為

以下選項控制資料如何寫入目標 Snowflake 資料表。

選項 Description
column_mapping DataFrame 欄位如何與 Snowflake 表格欄位匹配: name (依欄位名稱)或 position (依欄位順序)。 預設值:name。
column_mismatch_behavior 當 DataFrame 與資料表欄位不對齊時的行為: error 或 ignore。 預設值:error。
truncate_table 若 true,則在寫入前截斷目標表。 預設值:false。
usestagingtable 如果 true,會在暫存資料表中分段資料,然後再切換到目標資料,從而實現原子寫入。 預設值:true。
internal_execute_query_in_sync_mode 若 true,則會同步執行 Snowflake 查詢。 預設值:false。
autopushdown 若 true,則將過濾與聚合操作下送至 Snowflake 執行。 預設值:true。

Redshift

以下章節依功能分類列出 Redshift 連接器所支援的選項。

連線

以下選項需配置與 Redshift 叢集的連線。

選項 Description
host Redshift 叢集端點主機名稱。
port 連接埠號碼。 預設值:5439。
database Redshift 資料庫名稱。
connectionTimeout 等待連線的最大時間(秒數)。

Authentication

以下選項為 Redshift 及 Redshift 在寫入操作中使用的 S3 暫存位置設定憑證。

選項 Description
user Redshift 用戶名。
password Redshift 密碼。
aws_iam_role ARN 是 Redshift 用來存取 S3 以進行暫存資料的 IAM 角色。
temporary_aws_access_key_id S3 暫存的 AWS 存取金鑰 ID。 比起長期資歷更受青睞。
temporary_aws_secret_access_key S3 暫存的 AWS 秘密存取金鑰。
temporary_aws_session_token 用於 S3 暫存的 AWS 會話令牌。
forward_spark_s3_credentials 如果 true,則會將 Spark 的 S3 憑證轉發給 Redshift 進行暫存。 只有在 Spark 和 Redshift 共用相同的 S3 憑證時才使用。 預設值:false。

寫入行為

以下選項控制資料如何寫入目標 Redshift 資料表,包括分布、排序鍵及暫存格式。

選項 Description
dbtable 目標桌名。 支援結構限定名稱(例如, myschema.mytable)。
batchsize 每個批次插入的列數。 預設值:1000。
numPartitions 用於平行寫入操作的 Spark 分割區數量。
queryTimeout 等待查詢完成的最大時間(秒數)。
isolationLevel 交易隔離層級:NONE、REPEATABLE_READREAD_COMMITTEDREAD_UNCOMMITTED或。SERIALIZABLE 預設值:READ_UNCOMMITTED。
diststyle 紅移分布風格: EVEN、、 KEY或 ALL。
distkey 欄位作為分發鍵。 在diststyle為KEY時,為必要項。
sortkeyspec Redshift 表格的排序鍵規格(例如 SORTKEY(col1, col2))。
csvnullstring 用 staging CSV 檔案寫成的字串來表示 NULL 數值。 預設:空字串。
tempformat 暫存檔案格式: CSV 或 AVRO。 預設值:CSV。
truncate 如果 true,則在模式中截斷目標資料表 overwrite ,而非丟棄並重建。 預設值:false。

在無伺服器運算上寫入 PostgreSQL

此範例使用 append mode 並從 Databricks 的秘密範圍取得憑證。

df.write \
  .format("postgresql") \
  .option("host", dbutils.secrets.get(scope="<scope>", key="<host>")) \
  .option("port", "<port>") \
  .option("database", "<database-name>") \
  .option("dbtable", "<table-name>") \
  .option("user", dbutils.secrets.get(scope="<scope>", key="<user>")) \
  .option("password", dbutils.secrets.get(scope="<scope>", key="<password>")) \
  .mode("append") \
  .save()

下一步

  • Spark 資料來源:設定說明、程式碼範例,以及 Spark 整合策略的比較。
  • JDBC 連線:對於無伺服器綁定連接器不支援的選項,或是沒有綁定連接器的資料來源,請使用 Unity 目錄連接搭配 JDBC 驅動程式。
  • Spark API 選項參考:DataFrameReader、DataFrameWriter 參考,以及檔案格式與串流來源的串流選項。