查询与Hadoop的map-reduce有关

时间:2012-01-03 07:03:20

标签: hadoop mapreduce

情景:

我有一个数据库子集和一个数据仓库。我把这两件事都带到了HDFS上。 我想基于子集和数据仓库分析结果。 (简而言之,对于子集中的一条记录,我必须扫描数据仓库中的每条记录)

问题:

我想使用Map-Reduce algo来完成这项任务。我没有得到如何将两个文件作为mapper中的输入以及如何在map-reduce的map阶段处理这两个文件。

请给我一些想法,以便我能够执行它?

2 个答案:

答案 0 :(得分:0)

前段时间我为其中一个课程写了一个Hadoop map reduce。我正在扫描几个IMD数据库,并生成有关演员的合并信息(基本上他所采取的名称,传记和电影都在不同的数据库中)。我想你可以使用我用于作业的相同方法: 我写了一个单独的地图,减少了以相同格式转换每个数据库文件,只需在map-reduce生成的每一行前面放置一个两个字母的前缀,以便能够告诉'BI'(传记),'MV'(电影)和等等。然后我使用所有这些生成的文件作为我最后一张地图的输入,处理它们以理想的方式对它们进行分组。

如果你真的要扫描数据仓库的每一行,我甚至不确定你需要这么多工作。也许在这种情况下,您可以在地图或缩减阶段(基于您想要执行的其他处理)执行此扫描,但我的建议假设您实际上需要根据子集过滤数据仓库。如果后者我的建议可能适合你。

答案 1 :(得分:0)

检查Data-Intensive Text Processing with MapReduce中的第3.5节(关系连接),了解Map-Side连接,Reduce-Side连接和Memory-Backed连接。在任何情况下,MultipleInput类都用于让多个映射器在单个作业中处理不同的文件。

仅供参考,您可以使用Apache Sqoop将数据库导入HDFS。