我想编写一个hadoop应用程序,它将一个文件和一个包含多个文件的输入文件夹作为输入。单个文件包含需要从文件夹中的其他文件中选择和提取其记录的 key 。我怎样才能实现这个目标?
顺便说一句,我有一个正在运行的 hadoop mapreduce 应用程序,它将文件夹的路径作为输入,进行处理并将结果写到不同的文件夹中。
我有点困惑如何使用文件来获取需要从特定目录中的其他文件中选择和提取的 key 。包含 key 的文件是一个大文件,因此无法直接装入主存储器。我该怎么做?
谢谢!
最佳答案
如果键的数量太大而无法容纳在内存中,则考虑将键集加载到布隆过滤器中(具有合适的大小以产生较低的误报率),然后处理文件,检查每个键的成员资格布隆过滤器(Hadoop 附带了一个 BloomFilter 类,请查看 Javadocs)。
您还需要执行第二个 MR 作业来进行最终验证(最有可能在reduce side join 中),以消除第一个作业的误报输出。
关于java - Hadoop MapReduce : Read a file and use it as input to filter other files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11096771/