Hadoop Mapper类中的参数

时间:2014-06-11 21:37:52

标签: java hadoop mapreduce hdfs

我正在开发一个情感分析工具,它接收来自.txt文件的内容,如果单词是正面还是负面,需要签入字典。我使用FileInputFormat.addInputPath(args [0])来引用包含要分析的单词的.txt文件。我尝试使用字典的内容(.txt文件64KB)创建一个ArrayList,并将一个静态对象传递给Mapper clas中使用的Class ReadDictionary。 在eclipse上运行它是可以的,但是当我尝试在Hadoop上运行时,我遇到了一些错误。如何以高效的方式将字典(.txt文件64KB)的内容传递给map类以在Hadoop(HDFS)上运行?

2 个答案:

答案 0 :(得分:1)

您可以使用org.apache.hadoop.filecache.DistributedCache缓存字典文件。

DistributedCache是​​Map-Reduce框架提供的一种工具,用于缓存应用程序所需的文件(文本,存档,jar等)。

在该节点上执行作业的任何任务之前,框架会将必要的文件复制到从属节点。它的效率源于这样一个事实,即每个作业只复制一次文件,并且能够缓存未在存档上存档的存档。

这是tutorial

答案 1 :(得分:0)

org.apache.hadoop.mapreduce.Mapper类中,有一个setup方法,在Mapper初始化时调用。

您可以将字典保存在HDFS中,也可以本地保存或远程保存,您可以将句柄传递给它(路径,文件路径或远程URL)作为上下文参数。在setup impl中,使用context参数实例化字典。字典对象将在Mapper的整个生命周期内保留在内存中。

如果需要,您可以使用cleanup方法清理它。