Hadoop 使用文件夹结构作为输入

Posted

技术标签:

【中文标题】Hadoop 使用文件夹结构作为输入【英文标题】:Hadoop use folder structure as input 【发布时间】:2012-01-12 17:23:53 【问题描述】:

我是一个尝试使用 Hadoop 的初学者,我想虽然我了解一般的 map-reduce 东西,但我一开始似乎错过了一些东西。

基本上,我正在尝试使用 hadoop 解析网站(本地)并获得链接结构(以便稍后我可以计算一些页面排名)。

因此,输入是一个文件夹结构(包含子文件夹和文件),而输出应该是,目前,每个文件都有一个链接到它的文件列表。

我应该使用什么 InputFormat? FileInputFormat 似乎不起作用(遇到文件夹时出现异常 - 说它是一个目录)。真的有这样的InputFormat可以输入这样的文件夹结构吗?

如果不是...我应该以某种方式预处理输入数据吗?意思是我应该将每个 html 文件放到一个目录中并从那里查看吗? 或者,有没有办法编写这样的 InputFormat 来满足我的需要?

【问题讨论】:

【参考方案1】:

其实有这样的InputFormat可以输入这样的文件夹结构吗?

所有的 FileInputFormat 都将 Path 作为输入,可以是目录或文件。

FileInputFormat 似乎不起作用(遇到文件夹时出现异常 - 说它是一个目录)。

JIRA 已在某些版本(0.21、0.22、0.23 和主干)中得到修复。 o.a.h.mapred.FileInputFormat 应该实现 addInputPathRecursively 方法。此外,请注意它没有在新 API (o.a.h.mapreduce.FileInputFormat) 中实现。这是来自主干的 o.a.h.mapred.FileInputFormat 类的 code。

顺便说一句,你使用的是什么版本?

基本上,我正在尝试使用 hadoop 解析网站(本地)并获得链接结构(以便稍后我可以计算一些页面排名)。

由于媒体的关注/炒作,Hadoop 正被用于每件事。 Hadoop 原样适用于某些类型的问题。考虑使用 Apache Hama 和 Giraph 进行图形处理。请注意,两者都在孵化器中,文档也很少。

【讨论】:

感谢您的回答。我正在使用 Hadoop 版本 1。我将尝试使用新的 FileInputFormat,看看它是如何工作的。 1.0.x 版是 0.20.* 代码库的品牌重塑,并且没有所需的 API。使用 0.22 版本,因为 0.23 有很多架构更改,并且与 1.0.x 有很大不同。

以上是关于Hadoop 使用文件夹结构作为输入的主要内容,如果未能解决你的问题,请参考以下文章

hadoop 多文件夹输入,map到reduce怎样排序

hadoop 怎么设置多个输入路径

如何使用 hbase 作为 hadoop 流作业的来源

Hadoop优化配置

Hadoop IO操作之基于文件的数据结构

MapReduce Hadoop StringTokenizer 获取 NoSuchElementException