我有一个配置了redis和maven的服务器,然后执行以下sparksession
spark = pyspark
.sql
.SparkSession
.builder
.master('local[4]')
.appName('try_one_core')
.config("spark.redis.host", "XX.XXX.XXX.XXX")
.config("spark.redis.port", "6379")
.config("spark.redis.auth", "XXXX")
.getOrCreate()
我正试图连接到一个远程redis服务器并从中写入/加载数据,但是当我尝试使用以下命令来.save()时
df
.write
.format("org.apache.spark.sql.redis")
.option("table", "df")
.option("key.column", "case_id")
.save()
我得到以下错误:
py4j.protocol.py4jjavaerror:调用o327.save时出错:java.lang.classnotfoundexception:找不到数据源:org.apache.spark.sql.redis。请在以下地址查找包裹http://spark.apache.org/third-party-projects.html
有什么解决办法吗?
2条答案
按热度按时间w1e3prcc1#
意思是
spark-redis-<version>-jar-with-dependencies.jar
没有Spark。必须使用文档中所述的以下参数运行pyspark:
$ bin/pyspark --jars <path-to>/spark-redis-<version>-jar-with-dependencies.jar --conf "spark.redis.host=localhost" --conf "spark.redis.port=6379" --conf "spark.redis.auth=passwd"
wqsoz72f2#
除了@fe2s answer之外,它也可以直接从maven加载,而不是从磁盘或网络存储加载
这个
--packages
以及--jars
参数也可以与normal一起使用spark-submit
命令