映射的任务是一个非常简单的'wordcount',由Java实现(请参阅http://wiki.apache.org/hadoop/WordCount)。
最后一行后面,"job.waitForCompletion(true);"我添加了一些由Jython实现的代码。
这意味着仅在namenode上需要Jythoon的库。但是,我将Jython的所有库添加到一个jar中,然后执行
hadoop jar wordcount.jar in out
字数统计没有任何问题。
我想解决的问题是,我必须为Jython提供大量从节点(映射器和reducer)不需要的库。jar几乎是15M (Jython大于14M)。
我可以把它们分开,得到相同的结果吗?
没有人知道这个问题。
我已经这样解决了这个问题:即使它不是最好的。
简单地,将jython.jar拷贝到hadoop默认的类路径/usr/local/hadoop(或安装hadoop的路径),并制作一个没有jython.jar的jar
如果你需要非常大的库来完成mapreduce任务,那么
-
上传jython.jar到hdfs
hadoop fs -put jython.jar Lib/jython.jar -
将以下行添加到主代码
DistributedCache。addFileToClassPath(新URI (Lib/jython.jar "));