javaAPI连接hbase
javaAPI连接hbase
IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.NavigableMap;
import java.util.Random;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellScanner;
import org.apache.hadoop.hbase.CellUtil;
import
org.apache.hadoop.hbase.HBaseConfiguration;
import
org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import
org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import
org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
/**
* hbase 操作 创建表
3.ConnectionFactory.createConnection(configuratio
n) :获取连接 conn
(HBaseAdmin 已过期)
TableName.valueOf(tablename);
HTableDescriptor(tname);
HColumnDescriptor(cf);
* 8. 将 表 列 簇 描 述 信 息 类 添 加 到 表 描 述 信 息 类 :
tDescriptor.addFamily(famliy);
* hbase 操作 添加数据
3.ConnectionFactory.createConnection(configuratio
n) :获取连接 conn
TableName.valueOf(tablename);
connection.getTable(tableName);
* 6.1.单挑插入 table.put(Put)
new ArrayList<Put>();
* put.addColumn(Bytes.toBytes("i"),
Bytes.toBytes("username"),
Bytes.toBytes("un_"+i)); //列簇,列,值
* batPut.add(put)
* table.put(batPut)
* hbase 操作 获取数据
3.ConnectionFactory.createConnection(configuratio
n) :获取连接 conn
TableName.valueOf(tablename);
connection.getTable(tableName);
求信息
* gets.add(get);
收数据
* 8. 使 用 CellScanner cellScanner =
result.cellScanner(); 获取 cell
* while(cellScanner.advance()){
String famliy =
Bytes.toString(CellUtil.cloneFamily(cell));
String qualify =
Bytes.toString(CellUtil.cloneQualifier(cell));
String rowkey =
Bytes.toString(CellUtil.cloneRow(cell));
String value =
Bytes.toString(CellUtil.cloneValue(cell));
System.out.println("rowkey:"+rowkey+",c
olumnfamily:"+famliy+",qualify:"+qualify+",value:"
+value);
* @author jiangtao
*/
classpath 下的 hbase-site.xml
HBaseConfiguration.create();
荐使用 Admin
configuration.set("hbase.zookeeper.quorum","
bd36,bd37,bd38,bd66,bd67");
configuration.set("hbase.zookeeper.property.cl
ientPort","2181");
configuration.set("zookeeper.znode.parent",
"/hbase-unsecure");
connection =
ConnectionFactory.createConnection(configuration);
admin = connection.getAdmin();
}
//创建表
//获取 admin 对象
TableName tname =
TableName.valueOf(tablename);//bd17:mytable
HTableDescriptor(tname);
//判断是否表已存在
if(admin.tableExists(tname)){
System.out.println("表"+tablename+"已存在");
return;
//添加表列簇信息
for(String cf:cf1){
HColumnDescriptor(cf);
tDescriptor.addFamily(famliy);
}
//调用 admin 的 createtable 方法创建表
admin.createTable(tDescriptor);
System.out.println("表"+tablename+"创建成功");
//删除表
Exception{
TableName tName =
TableName.valueOf(tablename);
if(admin.tableExists(tName)){
admin.disableTable(tName);
admin.deleteTable(tName);
System.out.println("删除表"+tablename+"成功!");
}else{
System.out.println("表"+tablename+"不存在。");
//新增数据到表里面 Put
Exception{
TableName tableName =
TableName.valueOf(table_name);
for(int i=0;i<10;i++){
java 基础数据类型和字节数组之间的相互转换)
Put(Bytes.toBytes("rowkey_"+i));
put.addColumn(Bytes.toBytes("i"),
Bytes.toBytes("username"),
Bytes.toBytes("un_"+i));
put.addColumn(Bytes.toBytes("i"),
Bytes.toBytes("age"),
Bytes.toBytes(random.nextInt(50)+1));
put.addColumn(Bytes.toBytes("i"),
Bytes.toBytes("birthday"),
Bytes.toBytes("20170"+i+"01"));
put.addColumn(Bytes.toBytes("j"),
Bytes.toBytes("phone"), Bytes.toBytes("电话_"+i));
put.addColumn(Bytes.toBytes("j"),
Bytes.toBytes("email"), Bytes.toBytes("email_"+i));
//单记录 put
// table.put(put);
batPut.add(put);
table.put(batPut);
System.out.println("表插入数据成功!");
Exception{
TableName tableName =
TableName.valueOf(table_Name);
table = connection.getTable(tableName);
//构建 get 对象
for(int i=0;i<5;i++){
Get(Bytes.toBytes("rowkey_"+i));
gets.add(get);
for(Result result:results){
//一行一行读取数据
//
NavigableMap<byte[],NavigableMap<byte[],Naviga
// for(byte[] cf:maps.keySet()){
//
NavigableMap<byte[],NavigableMap<Long,byte[]>
// for(byte[]
columnQualify:valueWithColumnQualify.keySet()){
// NavigableMap<Long,byte[]>
valueWithTimeStamp =
valueWithColumnQualify.get(columnQualify);
// for(Long
ts:valueWithTimeStamp.keySet()){
// byte[] value =
valueWithTimeStamp.get(ts);
//
System.out.println("rowkey:"+Bytes.toString(result
.getRow())+",columnFamliy:"+
// Bytes.toString(cf)
+",comlumnQualify:"+Bytes.toString(columnQualify
)+",timestamp:"
// +new Date(ts)
+",value:"+Bytes.toString(value)
// );
// }
// }
// }
//使用字段名称和列簇名称来获取 value 值
//
System.out.println("rowkey:"+Bytes.toString(result
.getRow())
+",columnfamily:i,columnqualify:username,value:"+
//
Bytes.toString(result.getValue(Bytes.toBytes("i"),
Bytes.toBytes("username")))
// );
//
System.out.println("rowkey:"+Bytes.toString(result
.getRow())
+",columnfamily:i,columnqualify:age,value:"+
//
Bytes.toInt(result.getValue(Bytes.toBytes("i"),
Bytes.toBytes("age")))
// );
CellScanner cellScanner =
result.cellScanner();
while(cellScanner.advance()){
String famliy =
Bytes.toString(CellUtil.cloneFamily(cell));
String qualify =
Bytes.toString(CellUtil.cloneQualifier(cell));
String rowkey =
Bytes.toString(CellUtil.cloneRow(cell));
String value =
Bytes.toString(CellUtil.cloneValue(cell));
System.out.println("rowkey:"+rowkey+",c
olumnfamily:"+famliy+",qualify:"+qualify+",value:"
+value);
}
}
//关闭连接
connection.close();
Exception {
hbaseTest.createTable("jiangtao:test", "i","j");
hbaseTest.putData("jiangtao:test");
hbaseTest.getData("jiangtao:test");
hbaseTest.cleanUp();