我正在尝试使用 Pig 创建一个在 Hadoop 集群上运行的基于字典的标注器。基本上,它所做的是针对每个文档(相当大的文本文档,最多几 MB)将每个句子中的每个单词与字典进行对比以读取相应的值。
最多会有几百个java程序(不是线程)并行运行,使用只读模式的字典文件。这个想法是从文本加载字典并创建一个 Map
来查询它。
Question: what should I be prepared for? Is it even remotely logic to want to read a file in a multiprogramming environment or should I first copy the (relatively small) file for each instance of the program? Is a
BufferedReader
something I should use while reading the file?
关于多道程序设计(与多线程相比)的结构化文档非常少,所以我有点害怕这样做会碰壁。
注意:如果你能给我提供更好的方法,你才可以回答我的思维方式完全错误;-)
最佳答案
我觉得你的方法很好。你应该从 DistributedCache
加载你的字典到内存,并使用内存加载的字典(例如,HashMap
)进行检查。
关于java - 海量多道程序和只读文件访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16343753/