Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 在纱线上运行Spark时未找到类_Apache Spark - Fatal编程技术网

Apache spark 在纱线上运行Spark时未找到类

Apache spark 在纱线上运行Spark时未找到类,apache-spark,Apache Spark,同样的代码可以在Spark单机版上运行,但当我在Thread上运行Spark时,它在Thread上失败了。异常为:java.lang.NoClassDefFoundError:无法初始化类org.elasticsearch.common.xcontent.json.JsonXContent,该类被抛出到Executor(纱线容器)中。但当我使用maven assembly时,我确实将elasticSearch jar包含在应用程序组装jar中。运行命令如下所示: spark-submit --e

同样的代码可以在Spark单机版上运行,但当我在Thread上运行Spark时,它在Thread上失败了。异常为:
java.lang.NoClassDefFoundError:无法初始化类org.elasticsearch.common.xcontent.json.JsonXContent
,该类被抛出到Executor(纱线容器)中。但当我使用maven assembly时,我确实将elasticSearch jar包含在应用程序组装jar中。运行命令如下所示:

spark-submit --executor-memory 10g --executor-cores 2 --num-executors 2 
--queue thejob --master yarn --class com.batch.TestBat /lib/batapp-mr.jar 2016-12-20
maven依赖项如下所示:

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-hive_2.10</artifactId>
    <version>1.6.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-mllib_2.10</artifactId>
    <version>1.6.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.10</artifactId>
    <version>1.6.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.10</artifactId>
    <version>1.6.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-catalyst_2.10</artifactId>
    <version>1.6.0</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.6.3</version>
    <!-- <scope>provided</scope> -->
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-client</artifactId>
    <version>1.2.0-cdh5.7.0</version>
    <!--<scope>provided</scope> -->
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-server</artifactId>
    <version>1.2.0-cdh5.7.0</version>
    <!--<scope>provided</scope> -->
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-protocol</artifactId>
    <version>1.2.0-cdh5.7.0</version>
    <!--<scope>provided</scope> -->
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-hadoop2-compat</artifactId>
    <version>1.2.0-cdh5.7.0</version>
    <!--<scope>provided</scope> -->
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-common</artifactId>
    <version>1.2.0-cdh5.7.0</version>
    <!--<scope>provided</scope> -->
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-hadoop-compat</artifactId>
    <version>1.2.0-cdh5.7.0</version>
    <!--<scope>provided</scope> -->
</dependency>


<dependency>
    <groupId>com.sksamuel.elastic4s</groupId>
    <artifactId>elastic4s-core_2.10</artifactId>
    <version>2.3.0</version>
    <!--<scope>provided</scope> -->
    <exclusions>
        <exclusion>
            <artifactId>elasticsearch</artifactId>
            <groupId>org.elasticsearch</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>2.3.2</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch-hadoop</artifactId>
    <version>2.3.1</version>
    <exclusions>
        <exclusion>
            <artifactId>log4j-over-slf4j</artifactId>
            <groupId>org.slf4j</groupId>
        </exclusion>
    </exclusions>
</dependency>

org.apache.spark
spark-hive_2.10
1.6.0
假如
org.apache.spark
spark-mllib_2.10
1.6.0
假如
org.apache.spark
spark-core_2.10
1.6.0
假如
org.apache.spark
spark-sql_2.10
1.6.0
假如
org.apache.spark
spark-catalyst_2.10
1.6.0
假如
com.fasterxml.jackson.core
杰克逊核心
2.6.3
org.apache.hbase
hbase客户端
1.2.0-cdh5.7.0
org.apache.hbase
hbase服务器
1.2.0-cdh5.7.0
org.apache.hbase
hbase协议
1.2.0-cdh5.7.0
org.apache.hbase
hbase-hadoop2-compat
1.2.0-cdh5.7.0
org.apache.hbase
hbase通用
1.2.0-cdh5.7.0
org.apache.hbase
hbase hadoop compat
1.2.0-cdh5.7.0
com.sksamuel.elastic4s
elastic4s-core_2.10
2.3.0
弹性搜索
org.elasticsearch
org.elasticsearch
弹性搜索
2.3.2
org.elasticsearch
弹性搜索hadoop
2.3.1
log4j-over-slf4j
org.slf4j

奇怪的是,执行器可以找到Hbase jar和ElasticSearch jar,它们都包含在依赖项中,但ElasticSearch不能找到一些类,所以我猜可能会有一些类冲突。我检查了程序集jar,它确实包含了“缺少的类”。

我可以看到,您已经看到了。 此外,您还对提供的依赖项
进行了注释
意味着它将被打包,同样的东西也可用于您的部署

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.6.3</version>
        </dependency>
其中您的JAR目录从您的发行版中提取。
您还可以从程序中打印如下所示的类路径

val cl = ClassLoader.getSystemClassLoader  
 cl.asInstanceOf[java.net.URLClassLoader].getURLs.foreach(pri‌​ntln)
编辑:在执行上述行之后,如果发现类路径中存在旧的重复jar,则将库包含在 应用程序或使用
--jars
,但也可以尝试设置
spark.{driver,executor}.userClassPathFirst
true

你能在这里创建依赖项列表吗?我刚刚添加了,非常感谢!请检查我的答案,希望有帮助!它有用吗?嗨,拉姆,我找到了原因,当我打印出ClassLoader.getSystemClassLoader时,正如你提到的,我发现它使用了文件:/opt/cloudera/parcels/CDH-5.7.0-1.cdh5.7.0.p0.45/jars/jackson-core-2.2.3.jar,但我确实需要jackson-core-2.6.3,我如何覆盖cloudera系统jar。@这就是问题所在,在Spark中解决这些冲突是很棘手的,您可以使用Spark也可以使用的库。在应用程序中包括您的库或使用--jars,但也可以尝试将
spark.{driver,executor}.userClassPathFirst
设置为
true
BTW general note,请注意。今后当你问此类问题时,请提及spark版本/cdh版本。当然,我在编辑后看到了您的依赖项。
val cl = ClassLoader.getSystemClassLoader  
 cl.asInstanceOf[java.net.URLClassLoader].getURLs.foreach(pri‌​ntln)