Chciałbym pracować lokalnie pracować w Pyspark, używając konkretnej wersji Hadoop (powiedzmy Hadoop-AWS 2.8.5) z powodu niektórych funkcji.

Wersje PYSPARK wydają się być wyrównane z wersjami zapłonowymi.

Tutaj używam Prapark 2.4.5, który wydaje się owijać iskrę 2.4.5.

Podczas przesyłania mojej pracy Pyspark, przy użyciu spark-submit --local[4] ..., z opcją --conf spark.jars.packages=org.apache.hadoop:hadoop-aws:2.8.5, napotkam następujący błąd:

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

Z następującymi wyjątkami Java:

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

Lub:

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

Przypuszczam, że wersja PYSPARK HADOOP HADOOP jest niezrównana z tym, który przechodzę do opcji spark-submit spark.jars.packages.

Ale nie mam pojęcia o tym, jak mogę to zrobić? :)

2
Axel Borja 21 marzec 2020, 14:28

1 odpowiedź

Domyślna iskra Disto ma biblioteki Hadoop. Pierwsze biblioteki wywoławcze (własne) biblioteki. Więc powinieneś ustawić --conf spark.driver.userClassPathFirst=true i dla klastra Dodaj --conf spark.executor.userClassPathFirst=true lub pobierz Spark Distro bez Hadoop. Prawdopodobnie będziesz musiał umieścić twoją Distro Hadoop do katalogu słoików iskier.

0
Artem Aliev 24 marzec 2020, 15:46