import [Link].
IOException;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import
[Link];
import
[Link];
import [Link];
import [Link];
import [Link];
import [Link];
import
[Link];
import [Link];
import
[Link];
import [Link];
import [Link];
import [Link];
import [Link];
/**
* hbase 操作 创建表
* 1.通过 [Link]() :获取配置 conf
* [Link]() :设置 zk 等参数(kerberos 认证等)
[Link](configuratio
n) :获取连接 conn
* 4. 通 过 [Link]() 来 获 取 Admin :表相关操作的类
(HBaseAdmin 已过期)
* 5. 创 建 TableName : 描 述 表 名 称 的 : TableName tname =
[Link](tablename);
* 6. 创 建表 描述 信 息类 : HTableDescriptor tDescriptor = new
HTableDescriptor(tname);
* 7. 添 加 表 列 簇 描 述 信 息 类 : HColumnDescriptor famliy = new
HColumnDescriptor(cf);
* 8. 将 表 列 簇 描 述 信 息 类 添 加 到 表 描 述 信 息 类 :
[Link](famliy);
* 9.调用 admin 创建表:[Link](tDescriptor);
* hbase 操作 添加数据
* 1.通过 [Link]() :获取配置 conf
* [Link]() :设置 zk 等参数(kerberos 认证等)
[Link](configuratio
n) :获取连接 conn
* 4. 创 建 TableName : 描 述 表 名 称 的 : TableName tname =
[Link](tablename);
* 5. 通 过 conn 连 接 获 得 表 对 象 : Table table =
[Link](tableName);
* 6.1.单挑插入 [Link](Put)
* 6.2. 批 量 插 入 数 据 , 先 用 list 封 装 put 对 象 : List<Put> batPut =
new ArrayList<Put>();
* Put put = new
Put([Link]("rowkey_"+i)); //插入的 rowkey
* [Link]([Link]("i"),
[Link]("username"),
[Link]("un_"+i)); //列簇,列,值
* [Link](put)
* [Link](batPut)
* hbase 操作 获取数据
* 1.通过 [Link]() :获取配置 conf
* [Link]() :设置 zk 等参数(kerberos 认证等)
[Link](configuratio
n) :获取连接 conn
* 4. 创 建 TableName : 描 述 表 名 称 的 : TableName tname =
[Link](tablename);
* 5. 通 过 conn 连 接 获 得 表 对 象 : Table table =
[Link](tableName);
* [Link]<Get> gets = new ArrayList<Get>(); //批量封装请
求信息
* Get get = new
Get([Link]("rowkey_"+i)); //查询的 rowkey
* [Link](get);
* [Link][] results = [Link](gets); //通过 Result[]接
收数据
* 8. 使 用 CellScanner cellScanner =
[Link](); 获取 cell
* while([Link]()){
Cell cell = [Link]();
//从单元格 cell 中把数据获取并输出
//使用 CellUtil 工具类,从 cell 中把数据获取出来
String famliy =
[Link]([Link](cell));
String qualify =
[Link]([Link](cell));
String rowkey =
[Link]([Link](cell));
String value =
[Link]([Link](cell));
[Link]("rowkey:"+rowkey+",c
olumnfamily:"+famliy+",qualify:"+qualify+",value:"
+value);
* @author jiangtao
*/
public class HbaseTest {
public Connection connection;
// 用 hbaseconfiguration 初 始 化 配 置 信 息 时 会 自 动 加 载 当 前 应 用
classpath 下的 [Link]
public static Configuration configuration =
[Link]();
public Table table;
public Admin admin;
public HBaseAdmin ad;
public HbaseTest() throws Exception{
//ad = new HBaseAdmin(configuration); //过期了,推
荐使用 Admin
[Link]("[Link]","
bd36,bd37,bd38,bd66,bd67");
[Link]("[Link]
ientPort","2181");
[Link]("[Link]",
"/hbase-unsecure");
//对 connection 初始化
connection =
[Link](configuration);
admin = [Link]();
}
//创建表
public void createTable(String
tablename,String... cf1) throws Exception{
//获取 admin 对象
Admin admin = [Link]();
//创建 tablename 对象描述表的名称信息
TableName tname =
[Link](tablename);//bd17:mytable
//创建 HTableDescriptor 对象,描述表信息
HTableDescriptor tDescriptor = new
HTableDescriptor(tname);
//判断是否表已存在
if([Link](tname)){
[Link]("表"+tablename+"已存在");
return;
//添加表列簇信息
for(String cf:cf1){
HColumnDescriptor famliy = new
HColumnDescriptor(cf);
[Link](famliy);
}
//调用 admin 的 createtable 方法创建表
[Link](tDescriptor);
[Link]("表"+tablename+"创建成功");
//删除表
public void deleteTable(String tablename) throws
Exception{
Admin admin = [Link]();
TableName tName =
[Link](tablename);
if([Link](tName)){
[Link](tName);
[Link](tName);
[Link]("删除表"+tablename+"成功!");
}else{
[Link]("表"+tablename+"不存在。");
//新增数据到表里面 Put
public void putData(String table_name) throws
Exception{
TableName tableName =
[Link](table_name);
Table table = [Link](tableName);
Random random = new Random();
List<Put> batPut = new ArrayList<Put>();
for(int i=0;i<10;i++){
//构建 put 的参数是 rowkey rowkey_i (Bytes 工具类,各种
java 基础数据类型和字节数组之间的相互转换)
Put put = new
Put([Link]("rowkey_"+i));
[Link]([Link]("i"),
[Link]("username"),
[Link]("un_"+i));
[Link]([Link]("i"),
[Link]("age"),
[Link]([Link](50)+1));
[Link]([Link]("i"),
[Link]("birthday"),
[Link]("20170"+i+"01"));
[Link]([Link]("j"),
[Link]("phone"), [Link]("电话_"+i));
[Link]([Link]("j"),
[Link]("email"), [Link]("email_"+i));
//单记录 put
// [Link](put);
[Link](put);
[Link](batPut);
[Link]("表插入数据成功!");
public void getData(String table_Name) throws
Exception{
TableName tableName =
[Link](table_Name);
table = [Link](tableName);
//构建 get 对象
List<Get> gets = new ArrayList<Get>();
for(int i=0;i<5;i++){
Get get = new
Get([Link]("rowkey_"+i));
[Link](get);
Result[] results = [Link](gets);
for(Result result:results){
//一行一行读取数据
//
NavigableMap<byte[],NavigableMap<byte[],Naviga
bleMap<Long,byte[]>>> maps = [Link]();
// for(byte[] cf:[Link]()){
//
NavigableMap<byte[],NavigableMap<Long,byte[]>
> valueWithColumnQualify = [Link](cf);
// for(byte[]
columnQualify:[Link]()){
// NavigableMap<Long,byte[]>
valueWithTimeStamp =
[Link](columnQualify);
// for(Long
ts:[Link]()){
// byte[] value =
[Link](ts);
//
[Link]("rowkey:"+[Link](result
.getRow())+",columnFamliy:"+
// [Link](cf)
+",comlumnQualify:"+[Link](columnQualify
)+",timestamp:"
// +new Date(ts)
+",value:"+[Link](value)
// );
// }
// }
// }
//使用字段名称和列簇名称来获取 value 值
//
[Link]("rowkey:"+[Link](result
.getRow())
+",columnfamily:i,columnqualify:username,value:"+
//
[Link]([Link]([Link]("i"),
[Link]("username")))
// );
//
[Link]("rowkey:"+[Link](result
.getRow())
+",columnfamily:i,columnqualify:age,value:"+
//
[Link]([Link]([Link]("i"),
[Link]("age")))
// );
//使用 cell 获取 result 里面的数据
CellScanner cellScanner =
[Link]();
while([Link]()){
Cell cell = [Link]();
//从单元格 cell 中把数据获取并输出
//使用 CellUtil 工具类,从 cell 中把数据获取出来
String famliy =
[Link]([Link](cell));
String qualify =
[Link]([Link](cell));
String rowkey =
[Link]([Link](cell));
String value =
[Link]([Link](cell));
[Link]("rowkey:"+rowkey+",c
olumnfamily:"+famliy+",qualify:"+qualify+",value:"
+value);
}
}
//关闭连接
public void cleanUp() throws Exception{
[Link]();
public static void main(String[] args) throws
Exception {
HbaseTest hbaseTest = new HbaseTest();
[Link]("jiangtao:test", "i","j");
[Link]("jiangtao:test");
[Link]("jiangtao:test");
[Link]();