在无服务器计算上使用捆绑连接器写入外部数据源时,仅支持一部分连接器选项。 下表列出了每个连接器支持的选项。
有关设置说明和示例,请参阅 Spark 数据源。
PostgreSQL
在无服务器计算上写入 PostgreSQL 时,支持以下选项。
| 选项 | Description |
|---|---|
host |
PostgreSQL 服务器的主机名。 |
port |
端口号。 默认值:5432。 |
database |
要连接到的数据库的名称。 |
connectTimeout |
等待连接的最长时间(以秒为单位)。
0 禁用超时。 |
user |
数据库用户名。 |
password |
数据库密码。 |
dbtable |
目标表名称。 支持架构限定的名称(例如 myschema.mytable)。 |
batchsize |
要每批插入的行数。 默认值:1000。 |
numPartitions |
并行写入操作的 Spark 分区数。 |
queryTimeout |
等待查询完成的最长时间(以秒为单位)。
0 禁用超时。 |
isolationLevel |
事务隔离级别:NONE、、READ_COMMITTEDREAD_UNCOMMITTED、REPEATABLE_READ或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、、READ_COMMITTEDREAD_UNCOMMITTED、REPEATABLE_READ或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、、READ_COMMITTEDREAD_UNCOMMITTED、REPEATABLE_READ或SERIALIZABLE。 默认值:READ_UNCOMMITTED。 |
truncate |
如果 true,请 overwrite 以模式截断目标表,而不是删除并重新创建它。 默认值:false。 |
cascadeTruncate |
如果 true,将截断级联到对目标表的外键引用的表。 默认值:false。 |
Snowflake
以下部分列出了由函数组织的 Snowflake 连接器支持的选项。
Connection
以下选项配置与 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发送 keepalive 信号,以防止长时间运行的操作期间会话超时。 默认值:false。 |
ocspfailopen |
如果 true允许连接在 OCSP 证书验证不可用时继续(打开失败模式)。 默认值:true。 |
Authentication
以下选项为配置了 sfauthenticator身份验证方法提供凭据。 当 Snowflake 分阶段通过云存储写入数据时,需要暂存凭据(temporary_aws_*, awsaccesskey即 temporary_azure_sas_token)。
| 选项 | Description |
|---|---|
sfuser |
Snowflake 用户名。 |
sfpassword |
Snowflake 密码。 在何时sfauthenticatorsnowflake使用 。 |
sfToken |
OAuth 访问令牌。 在何时sfauthenticatoroauth使用 。 |
pem_private_key |
用于密钥对身份验证的 PEM 格式的私钥。 在何时sfauthenticatorsnowflake_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 |
临时Azure用于Azure Blob 存储暂存的 SAS 令牌。 |
awsaccesskey |
S3 暂存的 AWS 访问密钥。 |
awssecretkey |
S3 暂存的 AWS 密钥。 |
目标
以下选项指定要写入的 Snowflake 数据库、架构、仓库和表。
| 选项 | Description |
|---|---|
sfdatabase |
Snowflake 数据库名称。 |
sfschema |
Snowflake 架构名称。 |
sfwarehouse |
用于查询执行的 Snowflake 虚拟仓库。 |
sfrole |
会话的 Snowflake 角色。 |
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 连接器支持的选项,按函数进行组织。
Connection
以下选项配置与 Redshift 群集的连接。
| 选项 | Description |
|---|---|
host |
Redshift 群集终结点主机名。 |
port |
端口号。 默认值:5439。 |
database |
Redshift 数据库名称。 |
connectionTimeout |
等待连接的最长时间(以秒为单位)。 |
Authentication
以下选项为 Redshift 和 Redshift 在写入操作期间使用的 S3 暂存位置配置凭据。
| 选项 | Description |
|---|---|
user |
Redshift 用户名。 |
password |
Redshift 密码。 |
aws_iam_role |
Redshift 用于访问 S3 进行暂存数据的 IAM 角色的 ARN。 |
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、、READ_COMMITTEDREAD_UNCOMMITTED、REPEATABLE_READ或SERIALIZABLE。 默认值:READ_UNCOMMITTED。 |
diststyle |
Redshift 分布样式: EVEN、 KEY或 ALL。 |
distkey |
要用作分发键的列。 当 diststyle 是 KEY 时为必需项。 |
sortkeyspec |
对 Redshift 表(例如, SORTKEY(col1, col2))的键规范进行排序。 |
csvnullstring |
以临时 CSV 文件编写的字符串来表示 NULL 值。 默认值:空字符串。 |
tempformat |
暂存文件格式: CSV 或 AVRO。 默认值:CSV。 |
truncate |
如果 true,请 overwrite 以模式截断目标表,而不是删除并重新创建它。 默认值:false。 |
写入无服务器计算上的 PostgreSQL
此示例使用 append 模式并从 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 和流式处理选项的参考。