hbase学习笔记,
几个相关类与HBase数据模型之间的对应关系java类 | HBase数据模型 |
HBaseAdmin | 数据库 |
HBaseConfiguration | 数据库 |
HTable | 表 |
HTableDescriptor | 列族 |
Put | 列修饰符 |
Get | 列修饰符 |
Scanner | 列修饰符 |
返回值 | 函数 | 描述 |
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类型的属性值 |
返回值 | 函数 | 描述 |
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) | 检查表是否存在 |
返回值 | 函数 | 描述 |
void | addFamily(HColumnDescriptor) | 添加一个列族 |
HColumnDescriptor | removeFamily(byte []column) | 移除一个列族 |
byte[] | getName() | 获取表的名字 |
byte[] | getValue(byte []key) | 获取属性的名字 |
void | setValue(String key,String value) | 设置属性的值 |
返回值 | 函数 | 描述 |
byte[] | getName() | 获取列族的名字 |
byte[] | getValue(byte[] key) | 获取对应属性的值 |
void | setValue(String key,String value) | 设置对应属性的值 |
返回值 | 函数 | 描述 |
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 | 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 | addColumn(byte[]family,byte[] qualifier) | 获取指定列族和列修饰符对应的列 |
Get | addFamily(byte[] family) | 通过指定列族获取对应列的所有列 |
Get | setTimeRange(long minStamp,long maxStamp) | 获取指定区间的列的版本号 |
Get | setFilter(Filter filter) | 当执行Get操作时设置服务器端的过滤器 |
返回值 | 函数 | 描述 |
boolean | containsColumn(byte[]family,byte[]qualifier) | 检查指定的列是否存在 |
NavigableMap<byte[],byte[]> | getFamilyMap(byte[]family) | 获取列族包含的修饰符与值的键值对 |
byte[] | getValue(byte[]family,byte[]qualifier) | 获取对应列的最新值 |
返回值 | 函数 | 描述 |
void | close() | 关闭scanner并释放分配给他的资源 |
Result | next() | 获取下一行的值 |
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,
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。