Pyspark + Redis Удаленный сервер - PullRequest
1 голос
/ 19 февраля 2020

У меня есть сервер с настроенным 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 ]

2 голосов
/ 19 февраля 2020

Это означает, что 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"

0 голосов
/ 19 февраля 2020

В дополнение к ответу @ fe2s, вместо загрузки его с диска или сетевого хранилища его также можно загружать непосредственно из maven

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

аргументы --packages и --jars также можно использовать с нормальная spark-submit команда

...