Map
protected void map(ImmutableBytesWritable key, Result result, Context context) throws IOException, InterruptedException {
/**
*
* @param key 我们的主键rowkey
* @param value 我们一行数据所有列的值都封装在value里面了
* @param context
* @throws IOException
* @throws InterruptedException
*/
String rowKey = Bytes.toString(key.get());
if(rowKey.compareTo("50") < 0){
return;
}
Put put = new Put(key.get());
Cell[] cells = result.rawCells();
for (Cell cell : cells) {
put.add(cell);
}
mkey.set(rowKey);
context.write(mkey,put);
}
Reduce
protected void reduce(Text key, Iterable<Put> puts, Context context) throws IOException, InterruptedException {
for (Put put : puts) {
context.write(NullWritable.get(),put);
}
}
Driver
static Connection connection;
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
Configuration configuration = HBaseConfiguration.create();
configuration.set("hbase.zookeeper.quorum", "node01,node02,node03");
connection = ConnectionFactory.createConnection(configuration);
Admin admin = connection.getAdmin();
//命名空间
NamespaceDescriptor.Builder builder = NamespaceDescriptor.create("habse_result");
NamespaceDescriptor hbase_result = builder.build();
admin.createNamespace(hbase_result);
//表的描述
HTableDescriptor hbase_comments_result = new
HTableDescriptor(TableName.valueOf("hbase_result:hbase_video_ori_result"));
//给表创建列族:info
HColumnDescriptor info = new HColumnDescriptor("info");
hbase_comments_result.addFamily(info);
//创建表
admin.createTable(hbase_comments_result);
admin.close();
connection.close();
Job job = Job.getInstance(configuration,"HbaseAPI3");
/*Map的初始化*/
TableMapReduceUtil.initTableMapperJob("hive_hbase_video",
new Scan(),
Mapper.class,
Text.class,
Put.class,
job);
/*Reduce的初始化*/
TableMapReduceUtil.initTableReducerJob("hbase_result:hbase_video_ori_result", Reducer.class,job);
job.waitForCompletion(true);
}