我有n个文件,我必须合并这些文件(仅使用map reduce代码) 例如,我正在拍摄2个样本文件。
档案1.txt
打开的文件是文件1.txt这是file1.txt中的数据
file 2.txt
打开的文件是文件2.txt这是file2.txt中的数据
我需要将这两个文件和预期输出合并为减速器的part_0001文件,期望它们是两者的组合
打开的文件是文件1.txt这是file1.txt中的数据
打开的文件是文件2.txt这是file2.txt中的数据
我知道这可以使用hadoop -getmerge轻松实现,但我需要一个简单的mapreduce工作来为我工作。
任何人都可以帮我解决映射器和缩减器必须遵循的逻辑(必须在mapper和reducer中设置的关键和值)?? < / p>
答案 0 :(得分:0)
您可以通过多种方式执行此操作。
1)使用配置单元查询
只需在hive表中加载这些文件,然后使用create table table2作为select * from table 1创建第二个文件;如果文件的总大小小于分割大小,则无需任何其他设置即可正常工作。 如果文件大小较大,请设置以下属性并执行查询。 set mapreduce.reduce.tasks = 1; 设置hive.exec.reducers.max = 1;
2)使用mapreduce程序
在mapper类中,将键设置为1,将值设置为文本。这将确保所有数据都将转到单个reducer。然后在reducer类中,单独编写文本并省略密钥。