Hadoop 在HDFS中的特定文件/块上运行Map Reduce作业

Hadoop 在HDFS中的特定文件/块上运行Map Reduce作业,hadoop,indexing,hdfs,Hadoop,Indexing,Hdfs,首先,我是hadoop新手:) 我有一个很大的gzip文件数据集(每个大小约为100-500mb的gzip文件中有tb个文档) 基本上,我需要对map reduce作业的输入进行某种过滤 我想以各种方式分析这些文件。其中许多作业只需要分析特定格式的文件(特定长度、包含特定单词等——各种任意(反向)索引),并且处理每个作业的整个数据集所需的时间不合理。所以我想创建指向HDFS中特定块/文件的索引 我可以手动生成所需的索引,但如何准确地指定要处理哪些(数千)特定文件/块作为映射器的输入?我可以在不将

首先,我是hadoop新手:)

我有一个很大的gzip文件数据集(每个大小约为100-500mb的gzip文件中有tb个文档)

基本上,我需要对map reduce作业的输入进行某种过滤

我想以各种方式分析这些文件。其中许多作业只需要分析特定格式的文件(特定长度、包含特定单词等——各种任意(反向)索引),并且处理每个作业的整个数据集所需的时间不合理。所以我想创建指向HDFS中特定块/文件的索引


我可以手动生成所需的索引,但如何准确地指定要处理哪些(数千)特定文件/块作为映射器的输入?我可以在不将源数据读入例如HBase的情况下执行此操作吗?我想去吗?还是我完全搞错了这个问题?

假设您有某种方法可以知道在一个大型文件库中要处理哪些x文件,您可以使用
org.apache.hadoop.mapreduce.lib.input.FileInputFormat.setInputPathFilter(Job,Class在HDFS中的特定文件上运行Map Reduce Job意味着根据某些标准过滤掉输入文件。这是Antoine Amend发布的一个好博客,会很有帮助。

因为您希望根据文件内容(包含单词foobar的文件)而不是文件元数据(文件名/大小等)过滤输入。)实际上,您需要我基于Hadoop InputSplit创建的索引类型。请参见

。如果我理解正确,您正在寻找一种方法来处理输入路径中文件的一个子集?如何以编程方式启动作业?如何针对HDFS块而不是针对不同格式(文件)运行不同的作业让你更快完成任务?你能更详细地阐述你的问题吗?很抱歉这么含糊。我在hadoop堆栈中还感觉不自在,所以我知道我的术语和思维方式有点不对劲。以下示例可能有助于解释我试图实现的目标:给定1000000个文件,以及一个索引,告诉我哪5000个文件包含word sunshine,运行一个map reduce作业,分析包含单词sunshine的所有文档。我可能应该补充一点,我有过多的索引,所有索引都重叠,因此我试图避免在./docs\u containing\u sunshine文件夹和./docs\u containing\u rain文件夹中出现重复的文件,否则(显然)简化相关文档的有限子集的处理。哦,我对如何启动作业没有任何限制。任何可能的方法:)很酷。自从问了这个问题之后,我实际上建立了一个类似的设置。我很高兴你添加了基准测试,我将尝试比较我与你略有不同的方法。你有没有一个粗略的例子来说明你的数据是什么样的,这样我就可以在上生成类似于基准测试的东西?