java - Hadoop MapReduce : Read a file and use it as input to filter other files

标签 java hadoop mapreduce

我想编写一个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/

相关文章:

java - 无法在加载场景之前附加文本。安卓和引擎

java - 如何降低 Android、java 上的传感器敏感级别?

amazon-web-services - impala - 它需要 hdfs 和名称节点吗?

scala - 错误 : value saveAsTextFile is not a member of scala. collection.Map[String,Long]

hadoop - 将输出文件添加到 Mapreduce 中的现有输出目录

hadoop - hadoop从 yarn 中请求特定机器

java - Spring - 依赖注入(inject) - 哪个优先?

java - servlet 中 sendRedirect 的澄清

hadoop - 在每个应用程序上重新读取哪些 YARN 配置参数?

hadoop - 为什么要对 map reduce 中生成的中间键进行 SORT?