HBASE(三)
来源:互联网 发布:美国必买护肤品知乎 编辑:程序博客网 时间:2024/04/29 23:28
今天看了一个人的博客 返现自己对HBASE了解还是太out了
下面补充一些概念 和新 API
**1.**NameSpace:相当于数据库 以前一直好奇 为什么HBASE 只有表 现在明白了 还有表空间 就相当于数据库 对应hadoop目录下的一个文件
//创建表空间 create_namespace '名字'//删除表空间 表空间中必须是空的drop_namespace '名字'
新的API 获取 连接的方式也不同
//我手打的 粘贴有错自己改://创建confConfiguration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum","hadoop01:2181,hadoop02:2181,hadoop03:2181");//获取连接 Connection conn = ConnectionFactory.createConnection(conf);这个conn 就能获取admin Admin admin = conn.getAdmin();admin 可以根据表名获得表 创建表空间 等等 就和旧API一样了conn 也能获的表 获得admin
创建表空间:
/** * 创建命名空间 * @throws Exception */ @Test public void createNameSpace() throws Exception{ Admin admin = conn.getAdmin(); NamespaceDescriptor namespace = NamespaceDescriptor.create("NAMESPACE").build(); admin.createNamespace(namespace); admin.close(); }
2.创建表的新API 采用TableName
/** * 创建表 */ @Test public void createTable() throws Exception{ Admin admin = conn.getAdmin(); TableName tableName = TableName.valueOf("NAMESPACE","TABLE1"); HTableDescriptor table = new HTableDescriptor(tableName); HColumnDescriptor colfam1 = new HColumnDescriptor("colfam1"); HColumnDescriptor colfam2 = new HColumnDescriptor("colfam2"); table.addFamily(colfam1); table.addFamily(colfam2); admin.createTable(table); admin.close(); }
命令行的形式:
create 'NAMESPACE:TABLE2','colfam1','colfam2'
3.查看数据库信息
命令行是 listapi: @Test public void list() throws Exception{ Admin admin = conn.getAdmin(); //获取所有的命名空间 NamespaceDescriptor[] namespaceDescriptors = admin.listNamespaceDescriptors(); for (NamespaceDescriptor namespaceDescriptor : namespaceDescriptors) { System.out.println(namespaceDescriptor.getName()); } } System.out.println("------------------------");//获取 给定命名空间下的表 TableName[] tableNames = admin.listTableNamesByNamespace("NAMESPACE"); for (TableName tableName : tableNames) { System.out.println(tableName.getNameAsString()); } System.out.println("------------------------"); //利用正则获得表 Pattern pattern = Pattern.compile("NAMESPACE:.*"); HTableDescriptor[] hTableDescriptors = admin.listTables(pattern); for (HTableDescriptor hTableDescriptor : hTableDescriptors) { System.out.println(hTableDescriptor); }
4.获取集群状态
ClusterStatus status = admin.getClusterStatus();
5. 14个过滤器
5.1 RowFilter
/** * 行键过滤 RowFilter */ @Test public void RowFilter() throws Exception { //建立与user表的连接 Table user = conn.getTable(TableName.valueOf("user"));// CompareFilter.CompareOp 包含小于 等于 大于 <= >= // 1.BinaryComparator 当前的值 RowFilter rowFilter1 = new RowFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("813782218261011172")));//2.正则匹配RegexStringComparator RowFilter rowFilter2 = new RowFilter(CompareFilter.CompareOp.EQUAL, new RegexStringComparator("^.*1$"));//3.包含子串 RowFilter rowFilter3 = new RowFilter(CompareFilter.CompareOp.EQUAL, new SubstringComparator("3782")); Scan scan = new Scan(); scan.addColumn(Bytes.toBytes("info"),Bytes.toBytes("age")); scan.setFilter(rowFilter1); ResultScanner scanner = user.getScanner(scan); for (Result result : scanner) { byte[] value = result.getValue(Bytes.toBytes("info"), Bytes.toBytes("age")); System.out.println(new String(value)); } }
5.2 FamilyFilter 列族过滤器
FamilyFilter kk = new FamilyFilter(CompareFilter.CompareOp.GREATER, new BinaryComparator(Bytes.toBytes("kk")));
5.3 DependentColumnFilter 参考列过滤器
以这一列为参考 在同列族中查找跟参考列时间戳一样的列
@Test public void depentCol() throws Exception{ Table user = conn.getTable(TableName.valueOf("user")); Scan scan = new Scan(); DependentColumnFilter filter = new DependentColumnFilter(Bytes.toBytes("info"), Bytes.toBytes("phone"), true, CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("13213921424"))); scan.setFilter(filter); ResultScanner scanner = user.getScanner(scan); for (Result result : scanner) { System.out.println(result); } }
5.4 PrefixFilter 前缀过滤器 根据行键的前缀进行过滤
/** * PrefixFilter 前缀过滤器 根据行键的前缀进行过滤 */ @Test public void prefix() throws Exception{ Table user = conn.getTable(TableName.valueOf("user")); Scan scan = new Scan(); PrefixFilter prefixFilter = new PrefixFilter(Bytes.toBytes("2243")); scan.setFilter(prefixFilter); ResultScanner scanner = user.getScanner(scan); for (Result result : scanner) { System.out.println(result); } }
5.5 分页过滤器
/** * 分页过滤器 PageFilter */ @Test public void pageFilter() throws IOException { Table user = conn.getTable(TableName.valueOf("user")); Scan scan = new Scan(); PageFilter pageFilter = new PageFilter(2); scan.setFilter(pageFilter); ResultScanner scanner = user.getScanner(scan); for (Result result : scanner) { System.out.println(result); } }
5.6 KeyOnlyFilter 行键过滤器
//只返回行键 值都为空 KeyOnlyFilter keyOnlyFilter = new KeyOnlyFilter();
5.7 FirstKeyOnlyFilter 首次行键过滤器 只返回第一列
FirstKeyOnlyFilter firstKeyOnlyFilter = new FirstKeyOnlyFilter();
5.8 InclusiveStopFilter 包含结束的过滤器
InclusiveStopFilter inclusiveStopFilter = new InclusiveStopFilter(Bytes.toBytes("510824118261011172"));
5.9 ColumnCountGetFilter 列计数过滤器
给定列数
从行第一列开始扫描 如果这一行 列数小于给定列数 继续扫描 否则程序结束
ColumnCountGetFilter columnCountGetFilter = new ColumnCountGetFilter(1);
5.10 ColumnPrefixFilter 列前缀过虑器
Filter cpf = new ColumnPrefixFilter(Bytes.toBytes("qual1")); // OK 筛选出前缀匹配的列
5.11 MultipleColumnPrefixFilter 多个列前缀过滤器
Filter filter = new MultipleColumnPrefixFilter(new byte[][] {Bytes.toBytes("a"),Bytes.toBytes("h")});
5.12 组合的filter
List<Filter> list = new ArrayList<Filter>(); FilterList f1 = new FilterList(FilterList.Operator.MUST_PASS_ALL,list);
还有很多 具体碰到了再查
阅读全文
1 0
- HBASE(三)
- Hbase有感(三)
- Hbase优化之三
- hbase笔记三
- HBase系列(三)
- Hbase笔记三:Hbase基本命令
- Hbase教程(三) Hbase集群安装
- HBase学习笔记(三)
- HBase的三大组件
- Hbase学习笔记(三)
- HBase RPC理解之三
- HBase之三【HBase基础】HFile存储格式
- Hbase深入学习(三) hbase安装目录解析
- Hbase入门之三HBase Client API使用入门1
- SHDP--Working with HBase(三)之HBase+Phoenix实现分页
- Hbase入门之三HBase Client API使用入门
- Hadoop+HBase+ZooKeeper三者关系图
- HBase MapReduce实例分析之三
- opencv双目标定
- python学习—Day19—import,时间格式转换
- JS A 标签无法focus
- 光线追踪
- android 支付宝网页登录二维码截屏时显示空白
- HBASE(三)
- MyApplication
- 谷歌最新的反编译工具apktool.jar
- 第十周-项目1
- leveldb:DB::Open创建一个新数据库或者打开一个已存在的数据库
- Java8新特性——接口的默认方法和类方法
- typedef struct 和struct 之间的千丝万缕
- linux设备驱动归纳总结(八):4.总线热插拔
- Leetcode