在 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 博客)。

语言: 中文