2014-06-11 57 views
0

我正在开发一个情绪分析工具,它接收.txt文件中的内容,并且需要检查字典中的单词是肯定还是否定。我使用FileInputFormat.addInputPath(args [0])引用包含要分析的单词的.txt文件。我试图用字典的内容(.txt文件64KB)创建一个ArrayList,并将一个静态对象传递给Mapper类中使用的类ReadDictionary。 在eclipse上运行它是好的,但是当我尝试在Hadoop上运行时,出现一些错误。如何将字典(.txt文件64KB)的内容以有效的方式传递给映射类以在Hadoop(HDFS)上运行?Hadoop Mapper类中的参数

回答

0

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

您可以保存你的字典在HDFS或本地或远程的地方,你可以通过它的控制器(路径,文件路径,或远程URL)作为上下文参数。在您的setup impl中,您使用上下文参数实例化字典。字典对象将通过您的Mapper的生命留在记忆中。

您可以清理,如果需要的话,在cleanup方法。

1

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

DistributedCache是​​一个Map-Reduce框架提供的缓存文件由应用程序需要(文字,档案,罐等)的设施。

作业的所有任务都在该节点上执行之前,该框架将复制到从节点所需的文件。它的效率源自这样一个事实,即每个作业只复制一次文件,并且能够缓存从站上未归档的归档。

这是tutorial

相关问题