从第三方客户端运行 Spark 工作负载¶
你可以通过 Jupyter 笔记本、VS Code 或任何基于 Python 的界面,以交互方式运行 Spark 工作负载,而无需管理 Spark 集群。工作负载会在 Snowflake 基础设施上运行。
例如,您可以执行以下任务:
确认您符合先决条件。
在 Snowflake 上设置环境以连接 Snowpark Connect for Spark。
安装 Snowpark Connect for Spark。
从您的客户端运行 PySpark 代码,以在 Snowflake 上运行。
先决条件¶
确认您的 Python 和 Java 安装基于相同的计算机架构。例如,如果 Python 基于 arm64,则 Java 也必须基于 arm64(比如,并非基于 x86_64)。
设置环境¶
您可以确保代码可以连接到 Snowflake 上的 Snowpark Connect for Spark,通过这种方式来设置开发环境。要连接到 Snowflake 客户端代码,将使用包含连接详细信息的 .toml
文件。
如已安装 Snowflake CLI,则可以使用它来定义连接。否则,可以手动将连接参数写入 config.toml
文件。
使用 Snowflake CLI 添加连接¶
您可以使用 Snowflake CLI,添加 Snowpark Connect for Spark 可用于连接到 Snowflake 的连接属性。您的更改将保存到 config.toml
文件。
使用 snow connection add 命令,运行以下命令来添加连接。
snow connection add
按照提示以定义连接。
请务必将
spark-connect
指定为连接名称。此命令会向您的
config.toml
文件添加连接,如以下示例所示:[connections.spark-connect] host = "example.snowflakecomputing.cn" port = 443 account = "example" user = "test_example" password = "password" protocol = "https" warehouse = "example_wh" database = "example_db" schema = "public"
运行以下命令,以确认连接正常。
使用 Snowflake CLI 添加连接后,可以通过这种方式测试连接。
snow connection list snow connection test --connection spark-connect
通过手动写入连接文件来添加连接¶
您可以手动编写或更新 connections.toml
文件,让代码能够连接到 Snowflake Snowpark Connect for Spark。
运行以下命令,确保您的
connections.toml
文件仅允许所有者(用户)具备读写权限。chmod 0600 "~/.snowflake/connections.toml"
编辑
connections.toml
文件,使其包含具有以下示例中所示连接属性的[spark-connect]
连接。请务必使用您自己的连接细节取代其中的值。
[spark-connect] host="my_snowflake_account.snowflakecomputing.cn" account="my_snowflake_account" user="my_user" password="&&&&&&&&" warehouse="my_wh" database="my_db" schema="public"
安装 Snowpark Connect for Spark¶
您可以将 Snowpark Connect for Spark 作为 Python 包进行安装。
创建 Python 虚拟环境。
例如,您可以使用 Conda,如以下示例所示。
conda create -n xxxx pip python=3.12 conda activate xxxx
安装 Snowpark Connect for Spark 包。
pip install --upgrade --force-reinstall snowpark-connect
添加 Python 代码以启动 Snowpark Connect for Spark 服务器并创建 Snowpark Connect for Spark 会话。
import os import snowflake.snowpark from snowflake import snowpark_connect # Import snowpark_connect before importing pyspark libraries from pyspark.sql.types import Row os.environ["SPARK_CONNECT_MODE_ENABLED"] = "1" snowpark_connect.start_session() # Start the local |spconnect| session spark = snowpark_connect.get_session()
从客户端运行 PySpark 代码¶
建立经过身份验证的连接之后,即可照常编写 PySpark 代码。
例如,您可以执行以下简单示例:
from pyspark.sql import Row
df = spark.createDataFrame([
Row(a=1, b=2.),
Row(a=2, b=3.),
Row(a=4, b=5.),])
print(df.count())
Snowpark Connect for Spark 安装故障排除¶
借助以下检查列表,您可以对 Snowpark Connect 的安装和使用进行故障排除。
确保 Java 和 Python 基于相同的架构。
使用最新的 Snowpark Connect 包文件,如 安装 Snowpark Connect for Spark 中所述。
确认带有 PySpark 代码的 python 命令在本地执行(即无 Snowflake 连接)中可以正常发挥作用。
例如,执行如下命令:
python your_pyspark_file.py