1

我有一个配置了 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找到包

有什么解决办法吗?

4

2 回答 2

2

这意味着它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"

于 2020-02-19T16:06:29.187 回答
0

除了@fe2s answer 之外,它也可以直接从 maven 加载,而不是从磁盘或网络存储中加载

bin/pyspark --packages com.redislabs:spark-redis:2.4.0

和 参数也可以与普通--packages命令一起使用--jarsspark-submit

于 2020-02-19T16:11:27.523 回答