我在MapR5.0上运行Spark2.1
在本地模式下启动星火时,我会得到以下异常
我的火花默认(重要配置)
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':请帮我一下
发布于 2018-02-16 12:38:53
我也经历过同样的问题。当运行我的火花作业-提交所有工作,但在当地运行同样的问题。
深入研究MapR社区产生了以下文章:https://community.mapr.com/thread/21262-spark-todf-returns-linkage-error-duplicate-class-definition#comments
此外,您还会注意到,在此文件中的集群中有以下配置键: spark.sql.hive.metastore.sharedPrefixes
因此,将这个键spark.sql.hive.metastore.sharedPrefixes添加到SparkConf中解决了我的问题。
下面是对这个键的解释:
一个逗号分隔的类前缀列表,应该使用Spark和一个特定版本的Hive之间共享的类加载器来加载。应该共享的类的一个例子是JDBC驱动程序,这些驱动程序需要与亚稳态通信。其他需要共享的类是那些与已经共享的类交互的类。例如,log4j使用的自定义追加程序。
你可以在这里读到更多关于它的信息:https://spark.apache.org/docs/2.1.0/sql-programming-guide.html
https://stackoverflow.com/questions/42547095
复制相似问题