我正在尝试运行一个用scala编写的mapreduce程序。我在类路径中包含了scala库。运行程序时,我的程序抛出以下错误。
$hadoop jar~/hadoopscala.jar com.learning.spark.wordcount/input/wordcountinput.csv/output-libjars~/lib/org.scala-lang.scala-library\u 2.12.2.v20170412-161608-vfinal-21d12e9.jar线程“main”java.lang.noclassdeffounderror:scala/predef$at com.learning.spark.wordcount$.main(wordcount)。scala:52)在com.learning.spark.wordcount.main(wordcount.scala)位于sun.reflect.nativemethodaccessorimpl.invoke0(本机方法)位于sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl)。java:62)在sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl。java:43)在java.lang.reflect.method.invoke(方法。java:498)在org.apache.hadoop.util.runjar.run(runjar。java:234)在org.apache.hadoop.util.runjar.main(runjar。java:148)原因:java.lang.classnotfoundexception:scala.predef$at java.net.urlclassloader.findclass(urlclassloader)。java:381)在java.lang.classloader.loadclass(classloader。java:424)在java.lang.classloader.loadclass(classloader。java:357)
scala库中提供了scala.predef$。是什么导致了这个错误。
1条答案
按热度按时间s2j5cfk01#
首先,您运行的不是mapreduce作业,而是spark作业。
如果你是提交这个Spark作业纱你应该用户
spark-submit
.在任何情况下,你都会想要构建一个胖jar(又称uberjar)。
使用sbt时,请尝试
sbt assembely