【问题标题】:Pyspark + Redis Remote ServerPyspark + Redis 远程服务器
【发布时间】:2020-02-19 15:23:37
【问题描述】:

我有一个配置了 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.保存。 : java.lang.ClassNotFoundException: 找不到数据 来源:org.apache.spark.sql.redis。请在以下位置找到包裹 http://spark.apache.org/third-party-projects.html

有什么解决办法吗?

【问题讨论】:

    标签: pyspark redis pyspark-sql pyspark-dataframes redis-server


    【解决方案1】:

    这意味着 spark-redis-<version>-jar-with-dependencies.jar 没有在 Spark 中加载。

    您必须使用documentation 中所述的以下参数运行 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"

    【讨论】:

    • 我已将此服务器配置为使用 redis 进行远程访问,然后在我的计算机上通过 pySpark 代码与指定的 spark 会话建立连接,但是我是否应该在我的计算机上也安装 maven?或仅在正在访问的远程服务器上
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-24
      • 1970-01-01
      • 2017-04-02
      • 2021-10-03
      • 2021-04-06
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      相关资源
      最近更新 更多