欢迎投稿

今日深度:

hbase学习笔记,

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,

www.htsjk.Com true http://www.htsjk.com/hbase/42076.html NewsArticle hbase学习笔记, 几个相关类与HBase数据模型之间的对应关系 java类 HBase数据模型 HBaseAdmin 数据库 HBaseConfiguration 数据库 HTable  表 HTableDescriptor 列族 Put 列修饰符 Get 列修饰符 Scanner 列修饰...
相关文章
    暂无相关文章
评论暂时关闭