写入 HBase 表的 MR 任务
(1)核心配置(Linux)
MR 输出到 HBase 需指定TableOutputFormat,并配置输出表名:
// 设置输出格式为TableOutputFormat
job.setOutputFormatClass(TableOutputFormat.class);
job.getConfiguration().set(TableOutputFormat.OUTPUT_TABLE, "t2");
TableMapReduceUtil.initTableReducerJob(
"t2", // 输出HBase表名
WriteReducer.class, // Reducer类
job
);
// Reducer输出Key为ImmutableBytesWritable(RowKey),Value为Put
job.setOutputKeyClass(ImmutableBytesWritable.class);
job.setOutputValueClass(Put.class);
Linux 下提交时需确保 HBase 表t2已创建,且 MR 运行用户有写入权限:
bash
hbase shell> create 't2', 'cf1'
hdfs dfs -chown -R hbase:hbase /tmp # 确保临时目录权限
(2)性能优化(Linux)
开启 HBase 批量写入:conf.set("hbase.client.write.buffer", "10485760")(10MB 缓冲区);
禁用 Reducer(若无需聚合):job.setNumReduceTasks(0),直接由 Mapper 写入 HBase。
浙公网安备 33010602011771号