scala - 如何正确设置 PySpark - Snowflake 连接的变量?
问题描述
我正在使用文档并尝试运行此处找到的简单脚本:https ://docs.snowflake.com/en/user-guide/spark-connector-use.html
Py4JJavaError: An error occurred while calling o37.load.
: java.lang.ClassNotFoundException: Failed to find data source: net.snowflake.spark.snowflake.
我的代码如下。我还尝试使用位于/Users/Hana/spark-sf/
目录中的 jdbc 和 spark-snowflake jar 的路径设置配置选项,但没有运气。
from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *
from pyspark import SparkConf, SparkContext
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config('spark.jars','/Users/Hana/spark-sf/snowflake-jdbc-3.12.9.jar,/Users/Hana/spark-sf/spark-snowflake_2.12-2.8.1-spark_3.0.jar') \
.getOrCreate()
# Set options below
sfOptions = {
"sfURL" : "<account_name>.snowflakecomputing.com",
"sfUser" : "<user_name>",
"sfPassword" : "<password>",
"sfDatabase" : "<database>",
"sfSchema" : "<schema>",
"sfWarehouse" : "<warehouse>"
}
SNOWFLAKE_SOURCE_NAME = "net.snowflake.spark.snowflake"
df = spark.read.format(SNOWFLAKE_SOURCE_NAME) \
.options(**sfOptions) \
.option("query", "select * from table limit 200") \
.load()
df.show()
我应该如何正确设置变量?以及需要设置哪些?如果有人可以帮助列出这些步骤,我将不胜感激!
解决方案
您可以尝试仅将格式设置为“雪花”吗
所以你的数据框会有
df = spark.read.format("snowflake") \
.options(**sfOptions) \
.option("query", "select * from table limit 200") \
.load()
或将SNOWFLAKE_SOURCE_NAME
变量设置为
SNOWFLAKE_SOURCE_NAME = "snowflake"
推荐阅读
- python - 创建从它继承的对象时在 Python 中进行条件导入
- android - firebase 数据库查询仅检索一次无法检索第二次
- matlab - 找到并标记矩阵曲面的局部最小值和最大值
- angular - 在同一页面中多次使用相同的组件
- java - 当单击 listView 的对象时,您可以使用哪个侦听器?
- npm - 我可以在本地为我的 jekyll 站点提供服务,但无法在 netlify 上运行
- php - 尝试从表单将数据插入数据库时出错
- scala - 尝试远程调试 Spark 应用程序:java.io.IOException "handshake failed - connection prematurally closed
- android - 如何在android中原生实现对android的recycler view行的推送效果
- apache-spark - Spark 错误:`线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/spark/sql/execution/streaming/Source$class`