hbase学习笔记

几个相关类与HBase数据模型之间的对应关系
java类
HBase数据模型
HBaseAdmin
数据库
HBaseConfiguration
数据库
HTable 
HTableDescriptor
列族
Put
列修饰符
Get
列修饰符
Scanner
列修饰符
一.    HBaseConfiguration
关系:org.apache.hadoop.hbase.HBaseConfiguration
作用:对HBase进行配置
返回值
函数
描述
void
addResource(Path file)
通过给定的路径所指的文件来添加资源
void
clear()
清除所有已设置的属性
string
get(String name)
获取属性名对应的值
String
getBoolean(String name,boolean defaultValue)
获取为boolean类型的属性值,如果其属性值类型不为boolean,则返回默认属性
void
set(String name,String value)
通过属性名来设置值
void
setBoolean(String name,booelean value)
设置booelan类型的属性值
二。HBaseAdmin
关系:org.apache.hadoop.hbase.client.HBaseAdmin
作用:提供一个接口来管理HBase的表信息。
方法 : 创建表、删除表、列出表项、使表有效或无效、添加或删除表列族成员
返回值
函数
描述
void
addColumn(String tableName,HColumnDescriptor column)
像一个已经存在的表添加列
void 
checkHBaseAvaliable(HBaseConfiguration conf)
静态函数,查看HBase是否处于运行状态
void
createTable(HTableDescriptor desc)
创建一个表,同步操作
void 
delateTable(byte []tableName)
删除一个已存在的表
void 
enableTable(byte []tableName)
使表处于有效状态
void
disableTable(byte []tableName)
使表处于无效状态
HTableDescriptor[]
listTables()
列出所有表
void
modifyTable(byte[] tableName,HTableDescriptor htd) 修改表的模式,异步操作,可能需要花费一定时间
boolean 
tableExists(String tableName)
检查表是否存在
三。HTableDescriptor
关系:org.apache.hadoop.hbase.HTableDescriptor
作用:包含了表的名字及其对应表的列族
返回值
函数
描述
void
addFamily(HColumnDescriptor)
添加一个列族
HColumnDescriptor
removeFamily(byte []column)
移除一个列族
byte[]
getName()
获取表的名字
byte[]
getValue(byte []key)
获取属性的名字
void 
setValue(String key,String value)
设置属性的值
四。HColumnDescriptor
关系:  org.apache.hadoop.hbase.HColumnDescriptor
作用:维护关于列族的信息,例如版本号,压缩设置等。
返回值
函数
描述
byte[]
getName()
获取列族的名字
byte[]
getValue(byte[] key)
获取对应属性的值
void 
setValue(String key,String value)
设置对应属性的值
五。HTable
关系: org.apache.hadoop.hbase.client.HTable
作用: 可以用来和HBase表直接通信。此方法对更新操作非线程安全
返回值
函数
描述
void 
checkAndPut(byte[]row,byte[]family,byte[]qualifier,byte[]value,Put put)
自动检查,row/family/qualifier是否与给定的值匹配
void
close()
释放所有资源或挂起内部缓冲区的更新
boolean 
exists(Get get)
检查Get实例所指的值是否在HTable的列中
Result
get(Get get)
获取制定行的某些单元格所对应的值
byte [][]
getEndKeys()
获取当前打开的表每个区域的结束键值
ResultScanner
getScanner(byte []family)
获取当前给定列族的Scanner实例
HTableDescriptor
getTableDescriptor()
获取当前表的HTableDescriptor实例
byte[]
getTableName()
获取表名
static boolean 
isTableEnabled(HBaesConfiguration conf,String tableName) 检查表是否有效
void 
put(Put put)
向表中添加值
六。   Put
关系: org.apache.hadoop.hbase.client.Put
作用: 用来对当个行执行添加操作
返回值
函数
描述
Put
add(byte[] family,byte[]qualifier,byte []value)
将指定的列和对应的值,添加到Put实例中
Put
add(byte[] family,byte[] qualifier,long ts,byte[]value)
将指定的列和对应的值及时间戳加到Put实例中
byte[]
getRow()
获取Put实例的行
RowLock
getRowLock()
获取Put实例的行锁
long 
getTimeStamp()
获取Put实例的时间戳
boolean 
isEmpty()
检查familyMap是否为空
Put
setTimeStamp(long timeStamp)
设置Put实例的时间戳
七。    Get
关系: org.apache.hadoop.hbase.client.Get
作用: 用来获取单个行的相关信息
返回值
函数
描述
Get
addColumn(byte[]family,byte[] qualifier)
获取指定列族和列修饰符对应的列
Get
addFamily(byte[] family)
通过指定列族获取对应列的所有列
Get
setTimeRange(long minStamp,long maxStamp)
获取指定区间的列的版本号
Get
setFilter(Filter filter)
当执行Get操作时设置服务器端的过滤器
八。 Result
关系: org.apache.hadoop.hbase.client.Result
作用: 存储Get或者Scan操作后获取表的单行值。使用此类提供的方法可以直接获取值或者各种Map结构
返回值
函数
描述
boolean 
containsColumn(byte[]family,byte[]qualifier)
检查指定的列是否存在
NavigableMap<byte[],byte[]>
getFamilyMap(byte[]family)
获取列族包含的修饰符与值的键值对
byte[]
getValue(byte[]family,byte[]qualifier)
获取对应列的最新值
九。ResultScanner
关系: Interface
作用: 客户端获取值的接口
返回值
函数
描述
void
close()
关闭scanner并释放分配给他的资源
Result
next()
获取下一行的值
十。HBase内置过滤器
1.    RowFilter:筛选出匹配的所有行,对于这个过滤器的应用场景,是非常直观的:使用BinaryComparator可以筛选出具有某个行键的行,或者通过改变
    比较运算符来筛选出符合某一条件的多条数据
    Filter rf=new RowFilter(CompareFilter.CompareOp.EQUAL,new BinaryComparator(Byte.toBytes("row1")));

2.    PrefixFilter:筛选出具有特定前缀的行键数据。这个过滤器所实现的功能其实也可由RowFilter结合RegexComparator来实现,
    Filter pf=new PrefixFilter(Bytes.toBytes("row"));

3.    KeyOnlyFilter:这个过滤器唯一的功能就是只返回每行的行键,值全部为空。
    Filter kof=new KeyOnlyFilter();

4.    RandomRowFilter:本过滤器的作用就是按照一定的几率(<=0会过滤掉所有的行,>=1会包含所有的行)来返回随机的结果集,对于同样的数据集,多次使用
    同一个RandomRowFilter会返回不同的结果集,对于需要随机抽取一部分数据的应用场景,可以使用此过滤器。
    Filter rrf=new RandomRowFilter((float)0.8);

5.    InclusiveStopFilter:扫描的时候,我们可以设置一个开始行键和一个终止行键,默认情况下,这个行键的返回是前闭后开区间,即包含起始行,但不包含
    终止行,如果我们想要同时包含起始行和终止行,那么我们可以使用此过滤器
    Filter isf=new InclusiveStopFilter(Bytes.toBytes("row1"));

6.    FirstKeyOnlyFilter:如果你只想返回的结果集中只包含第一列的数据,那么这个过滤器能够满足你的要求。它在找到每行的第一列后会停止扫描,从而使
    扫描的性能也得到一定的提升。
    Filter fkof=new FirstKeyOnlyFilter();

7.    ColumnPrefixFilter:按照列名的前缀来筛选单元格的
    Filter cpf=new ColumnPrefixFilter(Bytes.toBytes("qual1"));

8.    ValueFilter:按照具体的值来筛选单元格,这会把一行中值不能满足的单元个过滤掉。如下构造器,对于每一行的一个列,如果其对应的值不包含
    ROW2_QUAL1,那么这个列就不会返回给客户端
    Filter vf=new ValueFilter(CompareFilter.CompareOp.EQUAL,new SubStringComparator("ROW2_QUAL1"));

9.    ColumnCountGetFilter:这个过滤器来返回每行最多返回多少列,并在遇到一行的列数超过我们所设置的限制时,结束扫描操作
    Filter ccf=new ColumnCountGetFilter(2);

10.    SingleColumnValueFilter:用一列的值决定这一行的数据是否被过滤。在具体对象上,可以调用setFilterIfMissing(true)或则setFilterIfMissing(false),默认的值是false,
   其作用是,对于作为条件的列,如果这一列本身就不存在,那么如果为true,这样的行将会被过滤掉,如果为false,这样的行会包含在结果集中
    SingleColumnValueFilter scvf=new SingleColumnValueFilter(Bytes.toBytes("colfam1"),Bytes.toBytes("qual2"),CompareFilter.CompareOp.NOT_EQUAL,new                                     SubStringComparator("BOGUS"));
    scvf.setFilterIfMissing(false);
    scvf.setLastestVersionOnly(true);
11.    SingleColumnValueExcludeFilter:这个与10种过滤器的唯一区别就是,作为筛选条件的列不会包含在返回的结果中

12.    SkipFilter:这是一种附加过滤器,其与ValueFilter集合使用,如果发现一行中的某一列不符合条件,那么整行就会被过滤掉:
    Filter skf=new SkipFilter(vf);

13.    WhileMatchFilter:这个过滤器的应用场景也很简单,如果你想要在遇到某个条件数据之前的数据时,就可以使用这个过滤器;当遇到
    不符合设定条件的数据时,整个扫描也就结束了。
    Filter wmf=new WhileMatchFiler(rf);

14.    FilterList:用于综合使用多个过滤器。其中有两种关系:FilterList.Operator.MUST_PASS_ONE和FilterList.Operator.MUST_PASSS_ALL
    默认是FilterList.Operator.MUST_PASS_ALL,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值