mapred任务是一个非常简单的'wordcount',由Java实现(plz,见http://wiki.apache.org/hadoop/WordCount)。
在最后一行之后,“job.waitForCompletion(true);” 我添加了一些由Jython实现的代码。
这意味着Jythoon的库只需要在namenode上。 但是,我将Jython的所有库添加到一个jar中,然后 执行它
hadoop jar wordcount.jar in out
wordcount没有任何问题。
我想要解决的问题是我必须为Jython提供重型库,这是从属节点(映射器和缩减器)不需要的。 jar几乎是15M(高于14M是Jython)。
我可以拆分它们,并获得相同的结果吗?
答案 0 :(得分:0)
没有人知道这个问题。
我已经解决了这个问题如下:即使它不是最好的。
简单地说,将jython.jar复制到/ usr / local / hadoop(或已安装hadoop的路径),这是hadoop的默认类路径,并制作一个没有jython.jar的jar
如果你需要非常大的库来mapreduce任务,那么
将jython.jar上传到hdfs
hadoop fs -put jython.jar Lib / jython.jar
将以下行添加到主代码
DistributedCache.addFileToClassPath(新URI(“Lib / jython.jar”));