HBase 总结之HBase作为输出源
来源:互联网 发布:k60单片机简介 编辑:程序博客网 时间:2024/05/20 13:37
简介:HBase 作为输出源,即从其他存储介质中,使用MapReduce计算后将结果输出到HBase中。
下面直接上代码:
- 主程序
package apache.org.myhbase.asoutput;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.io.ImmutableBytesWritable;import org.apache.hadoop.hbase.mapreduce.TableOutputFormat;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.util.GenericOptionsParser;/** * 是 HBaseASOutPutMR 的启动方法,配置作业 * @author 13277 * */public class HBaseMR { public static void main(String[] args) throws Exception { Configuration conf = HBaseConfiguration.create(); conf.set(TableOutputFormat.OUTPUT_TABLE, "access-log"); String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); Job job = Job.getInstance(conf, "Hbase_Mr"); job.setNumReduceTasks(0); job.setJarByClass(HBaseMRTest.class); job.setMapperClass(HBaseASOutPutMR.class); job.setOutputKeyClass(ImmutableBytesWritable.class); job.setOutputValueClass(Put.class); job.setOutputFormatClass(TableOutputFormat.class); FileInputFormat.addInputPath(job, new Path(otherArgs[0])); System.exit(job.waitForCompletion(true) ? 0 : 1); }}
- 主程序中设置的Mapper
package apache.org.myhbase.asoutput;import java.io.IOException;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.io.ImmutableBytesWritable;import org.apache.hadoop.hbase.util.Bytes;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;/** * 从HDFS读取文件内容后,解析成要要插进HBase的记录 * @author 13277 * */public class HBaseASOutPutMR extends Mapper<LongWritable, Text, ImmutableBytesWritable, Put> { public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String[] strs = value.toString().split(" "); String rowkey = strs[0] + "-" + strs[3].substring(1); byte[] row = Bytes.toBytes(rowkey); byte[] family = Bytes.toBytes("info"); byte[] qualifier = Bytes.toBytes("url"); byte[] values = Bytes.toBytes(strs[6]); Put put = new Put(row); put.add(family, qualifier, values); context.write(new ImmutableBytesWritable(row), put); }}
PS:
在Hadoop任务配置中,使用FileInputFormat从HDFS读取数据,输出需要配置4项内容:输出格式为TableOutputFormat,输出表名,输出数据的Key和Value的类型。
1 0
- HBase 总结之HBase作为输出源
- HBase 总结之HBase作为输入源
- HBase 总结之HBase作为共享源
- HBase - MapReduce - HBase 作为输出源的示例 | 那伊抹微笑
- 【Hbase】Hbase常用命令总结
- HBase 总结之基础入门
- [HBase] HBase 之TableOutputFormat
- HBase作为存储方案
- Hbase总结
- Hbase总结
- Hbase 总结
- Hbase总结:Hbase中的Coprocessor
- hbase总结:hbase连接异常
- Hbase总结:Hbase中的Coprocessor
- zookeeper+hadoop+hbase 之 hbase
- Hadoop之Hbase------>Hbase常用命令
- hbase多表输出
- hbase多表输出
- 基于maven的ssh框架一步一步搭建(一)
- chrome 浏览器F12
- Javascript 严格模式详解
- hashcode()和equals()比较
- iOS为何在设备上运行时无法保存数据到应用bundle中
- HBase 总结之HBase作为输出源
- CAS-后续开发
- Hash和一致性Hash算法
- Android Camera 找出屏幕的最佳尺寸大小
- 颜色16进制颜色代码表
- python基本概念
- 苹果手机如何设置铃声
- [Wikioi 3145]汉诺塔游戏
- 基于maven的ssh框架一步一步搭建(二)