文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

hbase 2.0.2 java api怎么用

2023-06-02 20:59

关注

这篇文章将为大家详细讲解有关hbase 2.0.2 java api怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

package com.hbase.test;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.Cell;import org.apache.hadoop.hbase.CompareOperator;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.TableName;import org.apache.hadoop.hbase.client.Admin;import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;import org.apache.hadoop.hbase.client.Connection;import org.apache.hadoop.hbase.client.ConnectionFactory;import org.apache.hadoop.hbase.client.Delete;import org.apache.hadoop.hbase.client.Get;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.client.Result;import org.apache.hadoop.hbase.client.ResultScanner;import org.apache.hadoop.hbase.client.Scan;import org.apache.hadoop.hbase.client.Table;import org.apache.hadoop.hbase.client.TableDescriptor;import org.apache.hadoop.hbase.client.TableDescriptorBuilder;import org.apache.hadoop.hbase.filter.ColumnPrefixFilter;import org.apache.hadoop.hbase.filter.FilterList;import org.apache.hadoop.hbase.filter.FilterList.Operator;import org.apache.hadoop.hbase.filter.RegexStringComparator;import org.apache.hadoop.hbase.filter.RowFilter;import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;import org.apache.hadoop.hbase.util.Bytes;import org.junit.After;import org.junit.Before;import org.junit.Test;public class HbaseTest {Configuration conf = null;Connection conn = null;@Beforepublic void getConfigAndConnection() {conf = HBaseConfiguration.create();conf.set("hbase.zookeeper.quorum", "bigdata01,bigdata02,bigdata03");conf.set("hbase.zookeeper.property.clientPort", "2181");try {conn = ConnectionFactory.createConnection(conf);} catch (IOException e) {e.printStackTrace();}}@Testpublic void createTable() throws IOException {Admin admin = conn.getAdmin();if(!admin.isTableAvailable(TableName.valueOf("test"))) {TableName tableName = TableName.valueOf("test");//表描述器构造器TableDescriptorBuilder  tdb  =TableDescriptorBuilder.newBuilder(tableName)  ;//列族描述起构造器ColumnFamilyDescriptorBuilder cdb =  ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("user"));//获得列描述起ColumnFamilyDescriptor  cfd = cdb.build();//添加列族tdb.setColumnFamily(cfd);//获得表描述器TableDescriptor td = tdb.build();//创建表//admin.addColumnFamily(tableName, cfd); //给标添加列族admin.createTable(td);}//关闭链接}//单条插入@Testpublic void insertOneData() throws IOException {//new 一个列  ,hgs_000为row keyPut put = new Put(Bytes.toBytes("hgs_000"));//下面三个分别为,列族,列名,列值put.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("name") , Bytes.toBytes("hgs"));TableName tableName = TableName.valueOf("test");//得到 tableTable table = conn.getTable(tableName);//执行插入table.put(put);}//插入多个列@Testpublic void insertManyData() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));List<Put> puts = new ArrayList<Put>();Put put1 = new Put(Bytes.toBytes("hgs_001"));put1.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("name") , Bytes.toBytes("wd"));Put put2 = new Put(Bytes.toBytes("hgs_001"));put2.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("age") , Bytes.toBytes("25"));Put put3 = new Put(Bytes.toBytes("hgs_001"));put3.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("weight") , Bytes.toBytes("60kg"));Put put4 = new Put(Bytes.toBytes("hgs_001"));put4.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("sex") , Bytes.toBytes("男"));puts.add(put1);puts.add(put2);puts.add(put3);puts.add(put4);table.put(puts);table.close();}//同一条数据的插入@Testpublic void singleRowInsert() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));Put put1 = new Put(Bytes.toBytes("hgs_005"));put1.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("name") , Bytes.toBytes("cm"));put1.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("age") , Bytes.toBytes("22"));put1.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("weight") , Bytes.toBytes("88kg"));put1.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("sex") , Bytes.toBytes("男"));table.put(put1);table.close();}//数据的更新,hbase对数据只有追加,没有更新,但是查询的时候会把最新的数据返回给哦我们@Testpublic void updateData() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));Put put1 = new Put(Bytes.toBytes("hgs_002"));put1.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("weight") , Bytes.toBytes("63kg"));table.put(put1);table.close();}//删除数据@Testpublic void deleteData() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));//参数为 row key//删除一列Delete delete1 = new Delete(Bytes.toBytes("hgs_000"));delete1.addColumn(Bytes.toBytes("testfm"), Bytes.toBytes("weight"));//删除多列Delete delete2 = new Delete(Bytes.toBytes("hgs_001"));delete2.addColumns(Bytes.toBytes("testfm"), Bytes.toBytes("age"));delete2.addColumns(Bytes.toBytes("testfm"), Bytes.toBytes("sex"));//删除某一行的列族内容Delete delete3 = new Delete(Bytes.toBytes("hgs_002"));delete3.addFamily(Bytes.toBytes("testfm"));//删除一整行Delete delete4 = new Delete(Bytes.toBytes("hgs_003"));table.delete(delete1);table.delete(delete2);table.delete(delete3);table.delete(delete4);table.close();}//查询//@Testpublic void querySingleRow() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));//获得一行Get get = new Get(Bytes.toBytes("hgs_000"));Result set = table.get(get);Cell[] cells  = set.rawCells();for(Cell cell : cells) {System.out.println(Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength())+"::"+                    Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));}table.close();//Bytes.toInt(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("password")))}//全表扫描@Testpublic void scanTable() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));Scan scan = new Scan();//scan.addFamily(Bytes.toBytes("info"));//scan.addColumn(Bytes.toBytes("info"), Bytes.toBytes("password"));//scan.setStartRow(Bytes.toBytes("wangsf_0"));//scan.setStopRow(Bytes.toBytes("wangwu"));ResultScanner rsacn = table.getScanner(scan);for(Result rs:rsacn) {String rowkey = Bytes.toString(rs.getRow());System.out.println("row key :"+rowkey);Cell[] cells  = rs.rawCells();for(Cell cell : cells) {System.out.println(Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength())+"::"+                    Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));}System.out.println("-----------------------------------------");}}//过滤器@Test//列值过滤器public void singColumnFilter() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));Scan scan = new Scan();//下列参数分别为,列族,列名,比较符号,值SingleColumnValueFilter filter =  new SingleColumnValueFilter( Bytes.toBytes("testfm"),  Bytes.toBytes("name"),                 CompareOperator.EQUAL,  Bytes.toBytes("wd")) ;scan.setFilter(filter);ResultScanner scanner = table.getScanner(scan);for(Result rs:scanner) {String rowkey = Bytes.toString(rs.getRow());System.out.println("row key :"+rowkey);Cell[] cells  = rs.rawCells();for(Cell cell : cells) {System.out.println(Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength())+"::"+                    Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));}System.out.println("-----------------------------------------");}}//row key过滤器@Testpublic void rowkeyFilter() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));Scan scan = new Scan();RowFilter filter = new RowFilter(CompareOperator.EQUAL,new RegexStringComparator("^hgs_00*"));scan.setFilter(filter);ResultScanner scanner  = table.getScanner(scan);for(Result rs:scanner) {String rowkey = Bytes.toString(rs.getRow());System.out.println("row key :"+rowkey);Cell[] cells  = rs.rawCells();for(Cell cell : cells) {System.out.println(Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength())+"::"+                    Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));}System.out.println("-----------------------------------------");}}//列名前缀过滤器@Testpublic void columnPrefixFilter() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));Scan scan = new Scan();ColumnPrefixFilter filter = new ColumnPrefixFilter(Bytes.toBytes("name"));scan.setFilter(filter);ResultScanner scanner  = table.getScanner(scan);for(Result rs:scanner) {String rowkey = Bytes.toString(rs.getRow());System.out.println("row key :"+rowkey);Cell[] cells  = rs.rawCells();for(Cell cell : cells) {System.out.println(Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength())+"::"+                    Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));}System.out.println("-----------------------------------------");}}//过滤器集合@Testpublic void FilterSet() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));Scan scan = new Scan();FilterList list = new FilterList(Operator.MUST_PASS_ALL);SingleColumnValueFilter filter1 =  new SingleColumnValueFilter( Bytes.toBytes("testfm"),  Bytes.toBytes("age"),                CompareOperator.GREATER,  Bytes.toBytes("23")) ;ColumnPrefixFilter filter2 = new ColumnPrefixFilter(Bytes.toBytes("weig"));list.addFilter(filter1);list.addFilter(filter2);scan.setFilter(list);ResultScanner scanner  = table.getScanner(scan);for(Result rs:scanner) {String rowkey = Bytes.toString(rs.getRow());System.out.println("row key :"+rowkey);Cell[] cells  = rs.rawCells();for(Cell cell : cells) {System.out.println(Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength())+"::"+                    Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));}System.out.println("-----------------------------------------");}}@Afterpublic void closeConn() throws IOException {conn.close();}}

关于“hbase 2.0.2 java api怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯