HBase中怎么将已知表移植到另一张表中

本篇内容介绍了“HBase中怎么将已知表移植到另一张表中”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联是一家集网站建设,丰县企业网站建设,丰县品牌网站建设,网站定制,丰县网站建设报价,网络营销,网络优化,丰县网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

将已经存在某张表,比如 blog,将此表中的数据“移植”到另外一张新表中。

/***将HBase中一张表的数据移植到另一张表中。**/publicclassHBaseAndMapReduce4{publicstaticvoidmain(String[]args)throwsException{System.exit(run());}publicstaticintrun()throwsException{Configurationconf=newConfiguration();conf=HBaseConfiguration.create(conf);conf.set("hbase.zookeeper.quorum","192.168.226.129");Jobjob=Job.getInstance(conf,"findFriend");job.setJarByClass(HBaseAndMapReduce4.class);//实例化scan对象。Scanscan=newScan();scan.addColumn(Bytes.toBytes("article"),Bytes.toBytes("tags"));scan.addColumn(Bytes.toBytes("author"),Bytes.toBytes("nickname"));TableMapReduceUtil.initTableMapperJob("blog",scan,FindFriendMapper.class,ImmutableBytesWritable.class,ImmutableBytesWritable.class,job);TableMapReduceUtil.initTableReducerJob("friend02",FindFriendReducer.class,job);checkTable(conf);returnjob.waitForCompletion(true)?0:1;}privatestaticvoidcheckTable(Configurationconf)throwsException{Connectioncon=ConnectionFactory.createConnection(conf);Adminadmin=con.getAdmin();TableNametn=TableName.valueOf("friend02");if(!admin.tableExists(tn)){HTableDescriptorhtd=newHTableDescriptor(tn);HColumnDescriptorhcd=newHColumnDescriptor("person");htd.addFamily(hcd);admin.createTable(htd);System.out.println("表不存在,新创建表成功....");}}publicstaticclassFindFriendMapperextendsTableMapper{@Override//key是hbase中的行键//value是hbase中的所行键的所有数据protectedvoidmap(ImmutableBytesWritablekey,Resultvalue,Mapper.Contextcontext)throwsIOException,InterruptedException{ImmutableBytesWritablev=null;String[]kStrs=null;Listcs=value.listCells();for(Cellcell:cs){if("tags".equals(Bytes.toString(CellUtil.cloneQualifier(cell)))){kStrs=Bytes.toString(CellUtil.cloneValue(cell)).split(",");}elseif("nickname".equals(Bytes.toString(CellUtil.cloneQualifier(cell)))){v=newImmutableBytesWritable(CellUtil.cloneValue(cell));}}for(StringkStr:kStrs){context.write(newImmutableBytesWritable(Bytes.toBytes(kStr.toLowerCase())),v);}}}publicstaticclassFindFriendReducerextendsTableReducer{@Overrideprotectedvoidreduce(ImmutableBytesWritablekey,Iterablevalues,Reducer.Contextcontext)throwsIOException,InterruptedException{System.out.println("key--->"+key.get());Putput=newPut(key.get());StringBuildervStr=newStringBuilder();for(ImmutableBytesWritablevalue:values){System.out.println("value-->"+value.get());vStr.append((vStr.length()>0?",":"")+Bytes.toString(value.get()));}put.addColumn(Bytes.toBytes("person"),Bytes.toBytes("nickname"),Bytes.toBytes(vStr.toString()));context.write(key,put);}}}

“HBase中怎么将已知表移植到另一张表中”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


当前标题:HBase中怎么将已知表移植到另一张表中
转载源于:http://scyanting.com/article/cjgicj.html