在 Databricks 中为 Spark 配置 Snowflake¶
Databricks 版本 4.2 本机 Snowflake Connector 允许您的 Databricks 账户从 Snowflake 读取数据或向 Snowflake 写入数据,而无需导入任何库。旧版本的 Databricks 需要将 Spark Connector 的库导入到 Databricks 集群中。
连接器自动在 Spark 和 Snowflake 之间分配处理,无需用户指定应在每个系统上完成的处理部分。查询还受益于 Snowflake 的自动查询下推优化。
本主题内容:
先决条件¶
您必须拥有 Databricks 账户,并且必须使用 Databricks Runtime 版本 4.2 或更高版本。此外:
您应该已经在 Databricks 密钥管理器中设置了 Snowflake 用户登录名和密码;您将通过调用
dbutils.secrets.get(...)
读取登录名和密码。有关 Databricks 密钥管理器的更多详细信息,请参阅 https://docs.databricks.com/user-guide/secrets/index.html (https://docs.databricks.com/user-guide/secrets/index.html)
您必须创建 Snowflake 账户。要从此账户读取或写入,您需要以下信息:
Snowflake 账户的 URL。
连接到该账户的用户的登录名和密码。
连接后用于会话的默认数据库和架构。
连接后用于会话的默认虚拟仓库。
连接中使用的角色需要对包含您将通过 Databricks 读取或写入的表的架构具有 USAGE 和 CREATE STAGE 权限。
访问 Databricks Snowflake Connector 文档¶
Databricks Snowflake Connector 的主要文档可在 Databricks 网站上找到。该文档包含示例,显示 Scala 或 Python 笔记本使用的命令,用于将数据从 Spark 发送到 Snowflake,反之亦然。
有关更多详细信息,请参阅 数据源 – Snowflake (https://docs.databricks.com/spark/latest/data-sources/snowflake.html)。
为长时间运行的查询准备外部位置¶
如果您的某些作业长度超过 36 小时,请考虑准备一个外部位置用于在 Snowflake 和 Spark 之间进行数据交换。有关更多信息,请参阅 为文件准备外部位置。
Databricks 中的查询下推¶
Spark 查询受益于 Snowflake 的自动查询下推优化,从而提高了性能。默认情况下,Databricks 中启用 Snowflake 查询下推。
有关查询下推的更多详细信息,请参阅 将 Spark 查询处理推送到 Snowflake (Snowflake 博客)。