2017-03-02 3 views
2

Ich bin mit Spark-2.1 ​​auf MapR 5,0Spark-2.1 ​​auf MAPR 5,0

Ich erhalte Ausnahme folgende während Funken auf lokalen Modus starten

Mein Funke-default (Wichtige Konfiguration)

spark.sql.hive.metastore.version 0.13.1 
spark.sql.hive.metastore.jars 
          /opt/mapr/lib/maprfs-5.0.0-mapr.jar: 
          /opt/mapr/hadoop/hadoop-0.20.2/conf: 
          /opt/mapr/hadoop/hadoop-0.20.2/lib/protobuf-java-2.5.0.jar: 

          /opt/hadoopgpl/lib/hadoop-lzo.jar: 
          /opt/mapr/hadoop/hadoop-2.7.0/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7.0-mapr-1506.jar: 
          /opt/mapr/hadoop/hadoop-0.20.2/lib/commons-logging-1.1.1.jar: 
          /opt/mapr/hadoop/hadoop-0.20.2/lib/hadoop-auth-2.7.0-mapr-1506.jar: 
          /opt/mapr/lib/libprotodefs-5.0.0-mapr.jar: 
          /opt/mapr/lib/baseutils-5.0.0-mapr.jar: 
          /opt/mapr/hadoop/hadoop-0.20.2/lib/guava-13.0.1.jar: 
          /opt/mapr/hadoop/hadoop-0.20.2/lib/hadoop-common-2.7.0-mapr-1506.jar: 
          /opt/mapr/hadoop/hadoop-0.20.2/lib/commons-configuration-1.6.jar 

spark.sql.hive.metastore.sharedPrefixes com.mysql.jdbc,org.postgresql,com.microsoft.sqlserver,oracle.jdbc,com.mapr.fs.shim.LibraryLoader,com.mapr.security.JNISecurity,com.mapr.fs.jni,com.mapr.fs.shim 


java.lang.LinkageError: loader (instance of org/apache/spark/sql/hive/client/IsolatedClientLoader$$anon$1): attempted duplicate class definition for name: "com/mapr/fs/jni/MapRConstants" 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:763) 
... 104 more 
java.lang.IllegalArgumentException: Error while instantiating 
'org.apache.spark.sql.hive.HiveSessionState': 

Bitte helfen Sie mir dabei

+0

War es schließlich gelöst? Kannst du den Thread mit deinen Anmerkungen aktualisieren? – boger

Antwort

0

Ich habe das gleiche Problem erlebt. Beim Ausführen meines Spark-Jobs mit Spark-Submit funktionierte alles, aber es wurde lokal ausgeführt, um dasselbe Problem zu reproduzieren.

Ausgraben in MapR Gemeinschaft ergab diesen Beitrag: https://community.mapr.com/thread/21262-spark-todf-returns-linkage-error-duplicate-class-definition#comments

Darüber hinaus finden Sie, dass in Ihrem Cluster in dieser Datei Funken defaults.conf bemerken gibt es die folgenden Konfigurationsschlüssel: spark.sql.hive.metastore. sharedPrefixes

Also, das Hinzufügen dieser Schlüssel spark.sql.hive.metastore.sharedPrefixes in SparkConf fixiert mein Problem. Hier

ist eine Erklärung für diesen Schlüssel:

eine durch Kommata getrennte Liste von Klassen Präfixen, die geladen werden sollen die Classloader verwenden, die zwischen Spark-SQL und einer bestimmten Version von Hive geteilt wird. Ein Beispiel für Klassen, die geteilt werden sollten, ist JDBC Treiber, die benötigt werden, um mit dem Metastre zu sprechen. Andere Klassen, die freigegeben werden müssen, sind diejenigen, die mit Klassen interagieren, die bereits freigegeben sind. Zum Beispiel benutzerdefinierte Appender, die von log4j verwendet werden.

Sie können hier mehr darüber lesen: https://spark.apache.org/docs/2.1.0/sql-programming-guide.html

Verwandte Themen