捆绑连接器的无服务器写入选项

在无服务器计算上使用捆绑连接器写入外部数据源时,仅支持一部分连接器选项。 下表列出了每个连接器支持的选项。

有关设置说明和示例,请参阅 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_UNCOMMITTEDREPEATABLE_READSERIALIZABLE。 默认值: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 身份验证类型。 支持的值:SqlPasswordActiveDirectoryPasswordActiveDirectoryMSI
dbtable 目标表名称。 支持架构限定的名称(例如 myschema.mytable)。
batchsize 要每批插入的行数。 默认值:1000
numPartitions 并行写入操作的 Spark 分区数。
queryTimeout 等待查询完成的最长时间(以秒为单位)。 0 禁用超时。
isolationLevel 事务隔离级别:NONE、、READ_COMMITTEDREAD_UNCOMMITTEDREPEATABLE_READSERIALIZABLE。 默认值: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_UNCOMMITTEDREPEATABLE_READSERIALIZABLE。 默认值: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_*awsaccesskeytemporary_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 和表列不对齐时的行为: errorignore。 默认值: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_UNCOMMITTEDREPEATABLE_READSERIALIZABLE。 默认值:READ_UNCOMMITTED
diststyle Redshift 分布样式: EVENKEYALL
distkey 要用作分发键的列。 当 diststyleKEY 时为必需项。
sortkeyspec 对 Redshift 表(例如, SORTKEY(col1, col2))的键规范进行排序。
csvnullstring 以临时 CSV 文件编写的字符串来表示 NULL 值。 默认值:空字符串。
tempformat 暂存文件格式: CSVAVRO。 默认值: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 和流式处理选项的参考。