java-compact map器部件文件


0

我有一个mapreduce job,它导出hbase表的纯文本。我在模拟hbase附带的Export类,不运行任何reducer。另外,我只是在为 key写一个空字符串。像这样:

public void map(ImmutableBytesWritable key, Result value, Context context) throws IOException, InterruptedException {
    List<Cell> cells = value.listCells();
    for(Cell cell : cells) {
        context
            .write(new Text(""), new Text(CellUtil.cloneValue(cell)));
    }
}

这 job 得很好,除了hbase表中有多少关于输出 map文件(例如part-m-NNNNN)的拆分外,我任由摆布。

有没有办法在mapreduce job中 coalesce 输出 map 文件?

我考虑过使用一个1-50之间的随机整数作为密钥,然后使用一个reducer在写入 HDFSS之前去掉密钥,但这看起来像是一个黑客。

1 答案


0

不管你的输入是什么,我知道你想 coalesce 所有的 map 输出。以下是选项。

    getmerge shell命令-这将把 coalesce 的文件赋给 local目录。

考虑到您与HBase的 chaining接,1,3是不错的选择。不知道你为什么认为这是黑客。可以使用行 key作为 map器输出 key,而不是随机整数。


我来回答

写文章

提问题

面试题