求助,不太理解mapreduce中的map函数的参数

CodeMonkeyWang 2015-01-21 06:20:16
最近正在学写mapreduce.就拿下面这个例子说吧,这是一个从hbase中读数据写入到另外一张hbase表中的数据.

在map函数中value这个参数是一行的数据.貌似我需要的东西全在value里了.不理解这个map函数的第一个参数ImmutableBytesWritable row传进来的是什么数据.debug一下看实际数据也不是我往表里插的什么数据 求大神解惑.

public class TxtHbase {
public static class MapperClass extends TableMapper<Text, IntWritable> {
private final IntWritable ONE = new IntWritable(1);
private Text text = new Text();

@Override
public void map(ImmutableBytesWritable row, Result value, Context context) throws IOException, InterruptedException {
String val = new String(value.getValue(Bytes.toBytes("cf1"), Bytes.toBytes("c1")));
text.set(val); // we can only emit Writables...

context.write(text, ONE);
}
}

public static class ReducerClass extends TableReducer<Text, IntWritable, ImmutableBytesWritable> {
@Override
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int i = 0;
for (IntWritable val : values) {
i += val.get();
}
Put put = new Put(Bytes.toBytes(key.toString()));
put.add(Bytes.toBytes("cf1"), Bytes.toBytes("count"), Bytes.toBytes(i));

context.write(null, put);
}
}

/**
* @param args
*/
public static void main(String[] args) throws Exception {
Configuration conf = HBaseConfiguration.create();
//String [] argArray=new GenericOptionsParser(conf, args).getRemainingArgs();
conf.set("from.table", "trade_detail_info");
conf.set("to.table", "trade_total");
//conf.set("family", "family1");

Job job = new Job(conf, "hbase to hbase");

job.setJarByClass(TxtHbase.class);
TableMapReduceUtil.initTableMapperJob(conf.get("from.table"), new Scan(), MapperClass.class, Text.class, IntWritable.class, job);
TableMapReduceUtil.initTableReducerJob(conf.get("to.table"), ReducerClass.class, job);
System.exit(job.waitForCompletion(true) ? 0 : 1);

}
}
...全文
658 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
CodeMonkeyWang 2015-01-23
  • 打赏
  • 举报
回复
引用 1 楼 wulinshishen 的回复:
是HBase表的RowKey
我又查看了一下输出的东西还真是rowkey 我的测试数据的rowkey是 1 2 3 5 之前调试的时候看第一个参数传进来的是个31,不知道这是个什么编码的数据 不过写了一行 String str = new String(row.get()); 看str的数据 就是我的rowkey
  • 打赏
  • 举报
回复
是HBase表的RowKey

20,848

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧