HBase的简单java操作
Posted One-Way
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HBase的简单java操作相关的知识,希望对你有一定的参考价值。
官方文档:http://hbase.apache.org/book.html
java简单操作hbase的表
1 import org.apache.hadoop.conf.Configuration; 2 import org.apache.hadoop.hbase.*; 3 import org.apache.hadoop.hbase.client.*; 4 import org.apache.hadoop.hbase.filter.CompareFilter; 5 import org.apache.hadoop.hbase.filter.FilterList; 6 import org.apache.hadoop.hbase.filter.SingleColumnValueFilter; 7 import org.junit.Before; 8 import org.junit.Test; 9 10 import java.io.IOException; 11 import java.util.ArrayList; 12 import java.util.Iterator; 13 import java.util.Random; 14 15 /** 16 * Created by Edward on 2016/6/19. 17 */ 18 public class TestHbase { 19 20 public static Configuration conf = null; 21 public static TableName table = TableName.valueOf("phone"); 22 public static Random random = new Random(); 23 24 @Before 25 public void setup() 26 { 27 //通过zookeeper集群,访问hbase 28 conf = HBaseConfiguration.create(); 29 conf.set("hbase.zookeeper.quorum", "node1,node2,node3"); 30 System.out.println("setup"); 31 } 32 33 @Test 34 public void createTable() throws IOException { 35 HBaseAdmin hBaseAdmin = new HBaseAdmin(conf); 36 if(hBaseAdmin.tableExists(table)) { 37 hBaseAdmin.disableTable(table); 38 hBaseAdmin.deleteTable(table); 39 } 40 //表 41 HTableDescriptor hTableDescriptor = new HTableDescriptor(table); 42 //列族 cf1 43 HColumnDescriptor hColumnDescriptor = new HColumnDescriptor("cf1"); 44 hColumnDescriptor.setBlockCacheEnabled(true); 45 hColumnDescriptor.setBlocksize(128000); 46 hColumnDescriptor.setMaxVersions(10); 47 //表增加列族 48 hTableDescriptor.addFamily(hColumnDescriptor); 49 hBaseAdmin.createTable(hTableDescriptor); 50 } 51 52 53 @Test 54 /** 55 * 插入数据 56 */ 57 public void insert() throws IOException { 58 59 //创建htable对象 60 HTable hTable = new HTable(conf, this.table); 61 ArrayList<Put> list = new ArrayList<Put>(); 62 63 for(int i = 0; i<1000; i++) 64 { 65 //row_key 66 Put put = new Put(String.valueOf(i).getBytes()); 67 //column,value 68 put.add("cf1".getBytes(),"name".getBytes(),"ls".getBytes()); 69 put.add("cf1".getBytes(),"age".getBytes(), String.valueOf(i%100).getBytes()); 70 //把每个put对象放到列表中 71 list.add(put); 72 } 73 //把信息放到表中 74 hTable.put(list); 75 } 76 77 78 @Test 79 /** 80 * 查询 81 */ 82 public void search() throws IOException 83 { 84 85 HTable hTable = new HTable(conf, this.table); 86 // 创建row_key对应的get对象 87 Get get = new Get("123".getBytes()); 88 // 获取get结果 89 Result result = hTable.get(get); 90 //获取 column latest cell 91 Cell columnLatestCell = result.getColumnLatestCell("cf1".getBytes(), "name".getBytes()); 92 //使用 CellUtil 获取值 93 byte[] bytes = CellUtil.cloneValue(columnLatestCell); 94 System.out.println(new String(bytes)); 95 } 96 97 98 @Test 99 /** 100 * 通过scan方法获取数据 101 * **/ 102 public void search1() throws IOException 103 { 104 HTable hTable = new HTable(conf, this.table); 105 //设置scan范围 106 Scan scan = new Scan("400".getBytes(),"450".getBytes()); 107 //通过scan得到result scanner 108 ResultScanner scanner = hTable.getScanner(scan); 109 //使用迭代器 110 Iterator<Result> iterator = scanner.iterator(); 111 112 while(iterator.hasNext()) 113 { 114 Result result= iterator.next(); 115 Cell columnLatestCell = result.getColumnLatestCell("cf1".getBytes(), "age".getBytes()); 116 //获取列族中列对应的值 117 byte[] bytes = CellUtil.cloneValue(columnLatestCell); 118 //获取row_key 119 byte[] bytes1 = CellUtil.cloneRow(columnLatestCell); 120 System.out.println(new String(bytes)+" "+new String(bytes1)); 121 } 122 } 123 }
以上是关于HBase的简单java操作的主要内容,如果未能解决你的问题,请参考以下文章
java 简单的代码片段,展示如何将javaagent附加到运行JVM进程
java 连接 kerberos 认证的 HBase 和 HDFS
☀️HBASE的JAVA API操作☀️ HBASE的过滤器查询☀️用到Hbase的时候可以通过本文快速的查看API用途《❤️记得收藏❤️》