在無伺服器運算中,使用捆綁連接器寫入外部資料來源時,僅支援部分連接器選項。 以下表格列出每個連接器所支援的選項。
關於設定說明與範例,請參閱 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 參考,以及檔案格式與串流來源的串流選項。