如何将 PySpark 中的数据框加载到 Snowflake

How to load a dataframe in PySpark to Snowflake

我正在尝试将数据帧 (df) 加载到雪花中。 table 是在 snowflake 中创建的,我正在尝试完全按照文档中的内容进行尝试。

我正在执行以下操作:

df.show()

sfOptions = {
"sfURL"       : "",
"sfAccount"   : "",
"sfUser"      : "",
"sfPassword"  : "",
"sfDatabase"  : "",
"sfSchema"    : "",
"sfWarehouse" : "",
"sfRole"      : "",
}

,(变量中保留了适当的值)

SNOWFLAKE_SOURCE_NAME= "net.snowflake.spark.snowflake"

df.write.format(SNOWFLAKE_SOURCE_NAME).options(**sfOptions).option("dbtable", "<tablename>").mode('append').options(header=True).save()

我遇到了这个错误:

**: java.lang.ClassNotFoundException: Failed to find data source: net.snowflake.spark.snowflake**

我在环境变量的 PATH 中添加了 snowflake-spark 连接器和 snowflake jdbc 连接器,并在创建 spark 会话时也使用了它。问题仍然存在。

我尝试了多条路线,但没有成功。任何线索将不胜感激。

您需要在 运行 pyspark 命令中添加 spark-snowflake 和 snowflake-jdbc 包。

pyspark --packages net.snowflake:snowflake-jdbc:3.8.0,net.snowflake:spark-snowflake_2.11:2.4.14-spark_2.4

或者如果您在本地有 jar 文件,您可以这样做

pyspark --py-files spark-snowflake.jar snowflake-jdbc.jar 

在您的 python 代码中甚至更准确。

spark.sparkContext.addPyFile("/path/to/jar/xxxx.jar")