2017-03-02 84 views
2

我上MAPR 5.0上運行的Spark 2.1上MAPR 5.0

我得到以下異常,而在本地模式啓動星火

我的火花默認值(重要的配置)

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

星火2.1請幫助我

+0

當時它最終解決了嗎?你可以更新線索與你的言論? – boger

回答

0

我遇到過同樣的問題。 當使用spark-submit運行我的Spark作業時,所有工作正常,但在本地運行它再現了同樣的問題。

挖掘出到MAPR社會產生了這個帖子:https://community.mapr.com/thread/21262-spark-todf-returns-linkage-error-duplicate-class-definition#comments

此外,你會發現,在這個文件火花defaults.conf羣集有以下配置項:spark.sql.hive.metastore。 sharedPrefixes

因此,在SparkConf中添加此關鍵字spark.sql.hive.metastore.sharedPrefixes修復了我的問題。

下面是該密鑰的解釋:

逗號分隔應使用 被火花SQL和特定 版本蜂房之間共享的類加載器加載的類的前綴列表。應該共享的類的示例是與零售商溝通所需的JDBC 驅動程序。 需要共享的其他類是那些與 已經共享的類交互的類。例如,log4j使用的自定義appender。

可以是閱讀更多關於它:https://spark.apache.org/docs/2.1.0/sql-programming-guide.html