不能在超级罐中找到课程

时间:2017-04-10 20:20:30

标签: scala maven apache-spark jar hortonworks-data-platform

我在Hortonworks Distribution 2.4上(实际上是hadoop 2.7.1和spark 1.6.1)

我在超级jar(2.1.0)中打包我自己的spark版本,而群集在1.6.1上。在这个过程中,我通过一个胖罐(使用maven - uber jar概念构建)发送所有必需的库。

但是,spark zh_cn(通过spark 2.1.0客户端)在引擎客户端上引用NoClassFound错误失败。在列出我的超级jar内容后,我可以在jar中看到确切的类文件,仍然火花/纱线无法找到它。

这里 - 错误消息 -

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig
        at org.apache.hadoop.yarn.client.api.TimelineClient.createTimelineClient(TimelineClient.java:55)
        at org.apache.hadoop.yarn.client.api.impl.YarnClientImpl.createTimelineClient(YarnClientImpl.java:181)
        at org.apache.hadoop.yarn.client.api.impl.YarnClientImpl.serviceInit(YarnClientImpl.java:168)
        at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)
        at org.apache.spark.deploy.yarn.Client.submitApplication(Client.scala:151)
        at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:56)
        at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:156)
        at org.apache.spark.SparkContext.<init>(SparkContext.scala:509)
        at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2313)
        at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:868)
        at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:860)
        at scala.Option.getOrElse(Option.scala:121)
        at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:860)

这是我尝试在jar文件中找到该类 -

jar -tf uber-xxxxx-something.jar | grep jersey | grep ClientCon
com/sun/jersey/api/client/ComponentsClientConfig.class
com/sun/jersey/api/client/config/ClientConfig.class

......其他档案

这可能会发生什么?建议?想法请.. ..

修改 pom的jersey客户端部分在这里 -

    <dependency>
         <groupId>com.sun.jersey</groupId>
         <artifactId>jersey-client</artifactId>
         <version>1.19.3</version>
     </dependency>

修改 我还想指出这一点,我的代码是用Scala 2.12编译的,兼容级别设置为2.11。但是,群集可能在2.10。我的意思是,因为我认为群集节点不一定必须安装Scala二进制文件; YARN只是在不使用Scala二进制文件的情况下启动组件的jar / class文件。想知道那是否在这里发挥作用!!!

0 个答案:

没有答案