提示:点击↑↑上方"陕邮职院网络工程师"关注我,每天更新HBase 提供很方便的shell脚本,可以对数据表进行 CURD 操作,但是毕竟是有一定的学习成本的,基本上对于开发来讲,sql 语句都是看家本领,那么,有没有一种方法可以把 sql 语句转换成 hbase的原生API呢? 这样就可以通过普通平常的 sql 来对hbase 进行数据的管理,使用成本大大降低。 Apache Phoenix 组件就完成了这种需求,官方注解为 “Phoenix we put the SQL back in NoSql”,通过官方说明,Phoenix 的性能很高,相对于 hbase 原生的scan 并不会差多少,而对于类似的组件 hive、Impala等,性能有着显著的提升,详细请阅读https://phoenix.apache.org/performance.html。
一、安装使用Phoenix 安装很简单,下载对应hbase版本的Phoenix,以phoenix-4.4.0-HBase-0.98-bin.tar.gz为例,解压文件,将phoenix-4.4.0-server.jar拷贝到hbase安装目录的lib下,注意:每台regionserver均需要拷贝,重启hbase server即可,官方如下:
二、shell 命令通过案例,create 表,插入语句,更新语句,删除语句案例,详细可参考:https://phoenix.apache.org/faq.html Phoenix 连接hbase的命令如下,sqlline.py [zookeeper]: 从上面能够看到,已经连接到了hbase集群上面,Phoenix version 4.2,sqlline version 4.2,输入Phoenix支持的命令!tables可以查看当前集群中存在的数据表,能够看到有些是SYSTEM TABLE,其它的都是自己建立的; 下面通过脚本来模拟下使用Phoenix建立数据表、修改表、添加数据、修改数据、删除数据、删除表等操作: 1、新建一张Person表,含有IDCardNum,Name,Age 三个字段 ,test 为table_schem ,标准sql如下: 可以看到,hbase中已经存在数据表 Person了,包含了三列。 2、对表进行插入操作,sql如下:
在 Phoenix 中插入的语句为 upsert ,具体如下: 从上面可以看到,三条数据已经进入hbase里面了;好了,现在要对表添加一列 ** 性别操作,怎么办? 3、alter 修改表数据,sql如下:
Phoenix 中操作如下: 上图看到已经新增了列**,每行的默认值为 null ,那么怎么样修改这些值呢? 4、 更新表数据 ,标准的sql 如下:
Phoenix中不存在update的语法关键字,而是upsert,功能上替代了Insert update,官方说明为:
根据介绍,只需要在upsert语句中制定存在的idcardnum即可实现更新,在 Phoenix 客户端中操作如下: 5、复杂查询,通过Phoenix可以支持 where、group by、case when 等复杂的查询条件,案例如下: where group by 语句例子:
|
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|