Pyspark + Redis 远程服务器

Pyspark + Redis Remote Server

我有一台配置了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 服务器并从中获取 write/load 数据,但是当我尝试使用以下命令

.save() 时
df
.write
.format("org.apache.spark.sql.redis")
.option("table", "df")
.option("key.column", "case_id")
.save()

我收到以下错误:

py4j.protocol.Py4JJavaError: An error occurred while calling o327.save. : java.lang.ClassNotFoundException: Failed to find data source: org.apache.spark.sql.redis. Please find packages at http://spark.apache.org/third-party-projects.html

有什么办法解决这个问题吗?

表示Spark中没有加载spark-redis-<version>-jar-with-dependencies.jar

您必须 运行 pyspark 使用 documentation 中所述的以下参数:

$ 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"

作为对@fe2s 回答的补充,它可以直接从 maven 加载,而不是从磁盘或网络存储加载它

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

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