hbase学习笔记

来源:互联网 发布:网络是利与弊 编辑:程序博客网 时间:2024/04/30 19:56
几个相关类与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,
0 0
原创粉丝点击