Java操作hbase

来源:互联网 发布:张鲁 三国杀淘宝 编辑:程序博客网 时间:2024/06/05 07:56

1.HBase简单介绍

HBase是一种构建在HDFS之上的分布式、面向列的存储系统。在需要实时读写、随机访问超大规模数据集时,可以使用HBase。

HBase以表的形式存储数据。表是由行和列组成,列划分为若干个列族。

存储形式如下:


建表时,不需要限定表中的字段,只要制定若干个列族就可以了。插入数据时,列族中可以任意存储多个列。

一个列名的值可以有多个版本

要查询一个具体字段的值,需要指定的坐标:表名-->行键-->列族:列名-->版本

2.Java客户端操作HBase建表

创建表的时候要指定列名和列族名

package neu.tt.hbase;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.HColumnDescriptor;import org.apache.hadoop.hbase.HTableDescriptor;import org.apache.hadoop.hbase.MasterNotRunningException;import org.apache.hadoop.hbase.TableName;import org.apache.hadoop.hbase.ZooKeeperConnectionException;import org.apache.hadoop.hbase.client.HBaseAdmin;public class CreateTableTest {public static void main(String[] args) throws MasterNotRunningException, ZooKeeperConnectionException, IOException{   //设置HBase据库的连接配置参数   Configuration conf =HBaseConfiguration.create();   conf.set("hbase.zookeeper.quorum", "slave2:2181,slave3:2181,slave4:2181");  //建立表名   TableName tableName=TableName.valueOf("hbasetest");   //列族名   String[] family = { "basicinfo","deptinfo"};   HBaseAdmin hbaseAdmin = new HBaseAdmin(conf);     //创建表对象     HTableDescriptor hbaseTableDesc = new HTableDescriptor(tableName);    for(int i = 0; i < family.length; i++) {      //设置列族名      hbaseTableDesc.addFamily(new HColumnDescriptor(family[i]));    }    hbaseAdmin.createTable(hbaseTableDesc);    hbaseAdmin.close();}}

3.插入数据

@Testpublic void insertTest() throws Exception{HTable hbasetest = new HTable(conf, "hbasetest");               //rk0001表示row key的值Put name=new Put(Bytes.toBytes("rk0001"));               //源码:public Put add(byte [] family, byte [] qualifier, byte [] value)name.add(Bytes.toBytes("basicinfo"), Bytes.toBytes("name"),Bytes.toBytes("tiantian"));Put age=new Put(Bytes.toBytes("rk0001"));age.add(Bytes.toBytes("basicinfo"), Bytes.toBytes("age"),Bytes.toBytes(18));ArrayList<Put> puts = new ArrayList<>();puts.add(name);puts.add(age);hbasetest.put(puts);hbasetest.close();}



结果:


附加:这是hbase的源码下载地址


0 0
原创粉丝点击