Есть ли способ использовать PySpark с oop 2.8+? - PullRequest
2 голосов
/ 21 марта 2020

Я хотел бы запустить задание PySpark локально, используя указанную c версию Had oop (скажем, имел oop - aws 2.8.5) из-за некоторых функций.

Версии PySpark, похоже, соответствуют версиям Spark.

Здесь я использую PySpark 2.4.5, который, кажется, оборачивает Spark 2.4.5.

При отправке моего задания PySpark, используя spark-submit --local[4] ..., с параметром --conf spark.jars.packages=org.apache.hadoop:hadoop-aws:2.8.5, я сталкиваюсь с следующая ошибка:

py4j.protocol.Py4JJavaError: An error occurred while calling o32.sql

Со следующими java исключениями:

java.lang.NoClassDefFoundError: org/apache/hadoop/fs/StorageStatistics

Или:

java.lang.IllegalAccessError: tried to access method org.apache.hadoop.metrics2.lib.MutableCounterLong.<init (Lorg/apache/hadoop/metrics2/MetricsInfo;J)V from class org.apache.hadoop.fs.s3a.S3AInstrumentation

Я полагаю, что Задание Pyspark Если версия oop не выровнена с версией, которую я передаю опции spark-submit spark.jars.packages.

Но я понятия не имею, как я могу заставить ее работать? :)

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Хорошо, я нашел решение:

1 - Установите Had oop в ожидаемой версии (для меня 2.8.5)

2 - Установите Had oop Бесплатная версия of Spark (для меня 2.4.4)

3 - установите переменную окружения SPARK_DIST_CLASSPATH, чтобы Spark использовал пользовательскую версию Had oop.

(ср. https://spark.apache.org/docs/2.4.4/hadoop-provided.html)

4 - Добавьте каталоги PySpark в переменную окружения PYTHONPATH, как показано ниже:

export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$SPARK_HOME/python:$SPARK_HOME/python/build:$PYTHONPATH

(обратите внимание, что версия py4j может отличаться)

Вот и все.

0 голосов
/ 24 марта 2020

В стандартную версию spark disto включены oop библиотеки. Сначала Spark использует системные (свои) библиотеки. Таким образом, вы должны либо установить --conf spark.driver.userClassPathFirst=true, а для кластера добавить --conf spark.executor.userClassPathFirst=true или скачать spark distro без oop. Возможно, вам придется поместить ваш oop дистрибутив в каталог spark disto jars.

...