使用Hbase API 编写读写增删扫描表记录程序 | 张恒镭的博客

使用Hbase API 编写读写增删扫描表记录程序

时间:13-12-08 栏目:hadoop 作者:恒镭, 张 评论:0 点击: 3,226 次

Hbase如何创建Configuration对象

Configuration对象包装了客户端程序连接Hbase服务
所需的全部信息;
 Zookeeper位置
 Zookeeper连接超时时间
 HbaseConfiguration.create()内部逻辑
 从CLASSPATH中加载hbase-default.xml和hbase-site.xml两个文件
• hbase-default.xml已经被打包到Hbase  jar包中
• hbase-site.xml需添加到CLASSPATH中
• hbase-site.xml将覆盖hbase-default.xml中的同名属性。

 

Hbase如何从CLASSPATH中获取hbase-site.xml信息;
 修改hadoop脚本,将Hbase  CLASSPATH加入
 在<hadoop_install>/conf/hadoop-env.sh中设置
export HADOOP_CLASSPATH=$HBASE_HOME/*:$HBASE_HOME/conf:$HADOOP_CLASSPATH

检查Hadoop CLASSPATH
 hadoop classpath
 hadoop classpath | grep hbase

如果已经有一个Configuration文件,可进行如下操
作;
Configuration newConf = Configuration.create(existingConf);
 用户自定义的配置文件将在已有配置文件之后加载
 将覆盖hbase-default.xml和hbase-site.xml中的配置

可单独覆盖某一个或多个参数值
Configuration conf = HbaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "node1,node2");
 通常不推荐这么做!

------------------------------------

创建HTable句柄
org.apache.hadoop.hbase.client.HTable
 一个table对应一个HTable句柄
 提供了CRUD操作
 设计简单、使用方便
 提供行级事务
       不支持多行事务或者表级别的事务
       严格的行一致性
      并发读、顺序写

创建HTable句柄代价很大
 扫描.META.表等;
 创建一次,以后尽可能复用;
 如果需要创建多个Htable句柄,使用HTablePool;

HTable并非线程安全的
 一个线程创建一个即可
Htable支持CRUD批处理
 非线程安全,仅是为了提高性能

----------------------------

向HBase写入数据
步骤1:创建一个Put对象;
 Put put = new Put(Bytes.toBytes("rowkey"));
步骤2:设置cell值;
 Put.add(family, column, value)
 Put.add(family, column, timestamp, value)
 Put.add(KeyValue kv) KeyValue封装了family, column, timestamp等信息
步骤3:调用HTable中的put方法,写入数据;
步骤4:关闭HTable句柄。

 

示例

image

--------------------------------

从Hbase中读取数据
 支持的API类型
      通过rowkey获取一行数据
      通过一个rowkey集合获取多条记录
       扫描整个表或者表的一部分
 扫描表
      可指定扫描的范围[startkey endkey)
      表中数据是按照rowkey排序的
 API 特点
      数目有限、使用简单

读取数据时注意事项
 只读取需要的数据
 尽可能增加数据约束条件
 可增加family, column(s), time range 和 max versions等约束条件
接口实例
 get.setTimeRange(minStamp, maxStamp)
 get.setMaxVersions(maxVersions)
  get.addFamily(family)
 get.addColumn(family, column)

读取示例:

image

 

 

image

 

从Hbase中删除数据

image

从Hbase中scan数据

image

声明: 本文由( 恒镭, 张 )原创编译,转载请保留链接: 使用Hbase API 编写读写增删扫描表记录程序

使用Hbase API 编写读写增删扫描表记录程序:等您坐沙发呢!

发表评论




------====== 本站公告 ======------
欢迎关注我的博客。

其他