spark读取elasticsearch数据报scala.collectino.GenTraversableOnce$class错解决办法

土哥呀 2018-09-18 02:36:26
spark读取elasticsearch数据报scala.collection.GenTraversableOnce$class错解决办法

spark2.3,创建temporary view表关联elasticsearch索引,通过temporary view读取elasticsearch数据时,报如下错误:

java.lang.NoClassDefFoundError:
scala/collection/GenTraversableOnce$class

原因是spark2.0以后,只支持scala的2.11以后的版本,但是这个版本里又没有scala.collection.GenTraversableOnce$class.class这个类,只有scala.collection.GenTraversableOnce.class这个类(注意两个class不一样)。而这个scala.collection.GenTraversableOnce$class.class类,只在scala的2.10版本中有。因此,我们需要下载一个scala的2.10的版本,在jar包中找到scala.collection.GenTraversableOnce$class.class这个类,拼拷贝出来,再使用winrar打开2.11的版本,把scala.collection.GenTraversableOnce$class.class加入到2.11的jar包去。上传集群后,重启集群,再试,一切OK、



结论:
scala.collection.GenTraversableOnce$class.class这个类在2.10版本jar反编译的源码中,只找到一个类似接口方法的声明,未找到内部类。直接加到到2.11版本的scala版本jar中,系统就正常了,因此怀疑这个scala.collection.GenTraversableOnce$class.class特殊的类,可能只是spark2.1.3版本中哪里有引用,并未使用。因此,加进去后可以正常运行。


有疑问,可加QQ讨论:455741807


...全文
614 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧