我有一个mapreduce作业,可以导出hbase表的纯文本。我正在模拟带有hbase但没有运行任何reducer的Export类。另外,我只是为密钥写一个空字符串。像这样:
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)));
}
}
这样可以正常工作,除非我受hbase表中有关输出映射文件数量(例如part-m-NNNNN)的许多拆分的支配。
有没有办法在mapreduce作业中组合输出映射文件?
我考虑使用1-50之间的随机整数作为密钥,然后使用减速器,然后在写入HDFS之前剥离密钥,但这似乎是一个黑客。
答案 0 :(得分:1)
无论您输入什么,我都知道您要合并所有地图输出。以下是选项。
鉴于您与HBase的关联,1,3是不错的选择。不确定为什么你认为它是哈克。您可以使用行键作为映射器输出键而不是随机整数。