我已阅读Using the libjars option with Hadoop和Hadoop: Implementing the Tool interface for MapReduce driver,并且我已经按照博客执行了我的工作。如何让Hadoop将jar部署到集群?
我的地图功能,减少在斯卡拉实施,并且效果很好,如果我收拾的Scala库到使用Proguard的我的罐子。现在我想分开scala-library以便进一步减少我的jar大小。
我分开的Scala库后,我跑这个命令:
HADOOP_ROOT_LOGGER=ALL,console hadoop jar /path/to/my.jar com.scala.mapreduce.Main -files /hdfs/path/to/scala-library.jar -libjars /hdfs/path/to/scala-library.jar /path/to/input /path/to/output
- 我不知道我是否需要-files选项
- 我试图改变路径格式,包括
file:///...
,OS特定格式,HDFS格式
我表示Hadoop的错误不能找到的Scala库:
Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/immutable/StringOps ...
第二行意味着我应该包含所有必需的类路径,而不仅仅是我自己的jar的类路径,是吗?...为什么文档不会说 – davidshen84 2015-02-07 13:23:39
您可能不需要包含所有的环境罐在libjars中...但这样写脚本更简单,并且没有任何伤害。如果更简单,您可以将jar包括在libjars中并将其附加到HADOOP_CLASSPATH。我稍后可能会优化它。 – 2015-02-08 08:10:47