如何将 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")
我正在尝试将数据帧 (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")