具有两个JAR的Hadoop Mapreduce(仅在namenode上需要一个JAR)

具有两个JAR的Hadoop Mapreduce(仅在namenode上需要一个JAR),hadoop,mapreduce,Hadoop,Mapreduce,mapred任务是一个由Java实现的非常简单的“wordcount”(plz,请参阅) 在最后一行之后,“job.waitForCompletion(true);” 我添加了一些由Jython实现的代码 这意味着Jythoon的库只在namenode上需要。 但是,我将Jython的所有库添加到一个jar中,然后 执行它 hadoop jar wordcount.jar in out 字数统计没有任何问题 我想解决的问题是,我必须为Jython创建大量库,而从属节点(映射器和还原器)不需要这

mapred任务是一个由Java实现的非常简单的“wordcount”(plz,请参阅)

在最后一行之后,“job.waitForCompletion(true);” 我添加了一些由Jython实现的代码

这意味着Jythoon的库只在namenode上需要。 但是,我将Jython的所有库添加到一个jar中,然后 执行它

hadoop jar wordcount.jar in out
字数统计没有任何问题

我想解决的问题是,我必须为Jython创建大量库,而从属节点(映射器和还原器)不需要这些库。震击器几乎有15米(Jython的震击器高于14米)


我能把它们分开,得到同样的结果吗?

没有人知道这个问题

我已经解决了这个问题如下:即使它不是最好的

简单地说,将jython.jar复制到/usr/local/hadoop(或安装的hadoop的路径),这是hadoop的默认类路径,并创建一个没有jython.jar的jar

如果您需要非常大的库来完成mapreduce任务,那么

  • 将jython.jar上载到hdfs

    hadoop fs-put jython.jar Lib/jython.jar

  • 在主代码中添加以下行

    addFileToClassPath(新URI(“Lib/jython.jar”)