Java操作hbase

本文介绍了HBase作为分布式、面向列的存储系统在处理大规模数据集时的优势。内容包括HBase的表结构、数据存储方式,以及如何使用Java客户端进行建表和数据插入操作。还提供了HBase的源码下载链接。
摘要由CSDN通过智能技术生成

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.插入数据

@Test
	public 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的源码下载地址


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值