2017-03-02 1 views
2

MAPR Je courais Spark 2.1 sur Mapr 5.0Spark 2.1 sur 5.0

Je reçois exception suivante lors du lancement de Spark sur le mode local

Mon allumage par défaut (configuration importante)

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': 

S'il vous plaît aidez-moi sur cela

+0

At-il été finalement résolu? Pouvez-vous mettre à jour le fil avec vos remarques? – boger

Répondre

0

J'ai rencontré le même problème. Lors de l'exécution de mon travail Spark en utilisant spark-submit tout a fonctionné mais en l'exécutant localement reproduit le même problème.

Déterrer dans la communauté MapR a abouti à ce poste: https://community.mapr.com/thread/21262-spark-todf-returns-linkage-error-duplicate-class-definition#comments

De plus, vous remarquerez que dans votre cluster dans ce fichier étincelle defaults.conf il est la clé de configuration suivante: spark.sql.hive.metastore. Par conséquent, en ajoutant cette clé spark.sql.hive.metastore.sharedPrefixes dans SparkConf a résolu mon problème.

Voici une explication de cette clé:

une liste séparée par des virgules des préfixes de classe qui doivent être chargés à l'aide la classloader qui est partagée entre Spark SQL et une version spécifique de la Ruche. Les pilotes JDBC nécessaires pour parler au métastore sont un exemple de classes à partager. Les autres classes qui ont besoin d'être partagées sont celles qui interagissent avec des classes déjà partagées . Par exemple, les appenders personnalisés utilisés par log4j.

Vous pouvez en lire davantage ici: https://spark.apache.org/docs/2.1.0/sql-programming-guide.html