Phoenix——实现向HBase发送标准SQL语句
写在前面一:
本文总结基于HBase的SQL查询系统——Salesforce phoenix
写在前面二:
环境说明:
一、什么是Phoenix
摘自官网:
Phoenix是一个提供hbase的sql操作的框架,Phoenix是构建在HBase之上的一个SQL中间层。
Phoenix全然使用Java编写,代码位于GitHub上,而且提供了一个client可嵌入的JDBC驱动。对于简单的低延迟查询,其性能量级为毫秒。对于百万级别的行数来说,其性能量级为秒。Phoenix并非像HBase那样
用于map-reduce job的,而是通过标准化的语言来訪问HBase数据的。
Phoenix最值得关注的特性:
1、嵌入式的JDBC驱动,实现了大部分的java.sql接口。包含元数据API
2、能够通过多部行键或是键/值单元对列进行建模
3、完好的查询支持,能够使用多个谓词以及优化的扫描键
4、DDL支持:通过CREATE TABLE、DROP TABLE及ALTER TABLE来加入/删除列
5、版本号化的模式仓库:当写入数据时,快照查询会使用恰当的模式
6、DML支持:用于逐行插入的UPSERT VALUES、用于同样或不同表之间大量传输数据的UPSERT SELECT、用于删除行的DELETE
7、通过client的批处理实现的有限的事务支持
8、单表——还没有连接,同一时候二级索引也在开发其中
9、紧跟ANSI SQL标准
二、Phoenix原理
Phoenix基本原理是将一个对于HBase client来说比較复杂的查询转换成一系列Region Scan,结合coprocessor和custom filter在多台Region Server上进行并行查询。汇总各个Scan结果。
种种迹象表明。Phoenix应该不是个优化的OLAP系统,更像是一个用于简单单表查询,过滤。排序,检索的OLTP系统。
Phoenix 能够为我们眼下大数据平台提供比較便捷的数据操作能力(直接用jdbc方式),性能比較不错。注意不要使用多表查询就可以 。
三、Phoenix安装配置
1、下载
phoenix-3.0.0-incubating.tar.gz
http://phoenix.incubator.apache.org/download.html#Installation
2、拷贝phoenix-3.0.0-incubating/common/phoenix-core-3.0.0-incubating.jar至$HBASE_HOME/lib/下
3、重新启动HBase集群
若通过client訪问phoenix,需进行下面操作:
把phoenix-3.0.0-incubating/hadoop-1/phoenix-3.0.0-incubating-client.jar加入到Phoenix客户端的类路径下
四、訪问Phoenix
4.1、通过命令行
进入phoenix
cd /home/yujianxin/hbase/phoenix/phoenix-3.0.0-incubating/bin
./sqlline.py slave3:2181
出现下面响应,说明成功安装
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2wxMDF5ang=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
4.2、通过Java
<span style="font-family:Times New Roman;">Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
// connection string: jdbc:phoenix [ :<zookeeper quorum> [ :<port number> ] [ :<root node> ] ]
Connection connection = DriverManager.getConnection("jdbc:phoenix:slave3:2181");</span>
4.3、通过SQLclientSQuirrel訪问
下载地址:http://squirrel-sql.sourceforge.net/
再进行安装配置就可以。
五、使用Phoenix
使用phoenix-3.0.0-incubating.tar.gz自带的数据进行測试
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2wxMDF5ang=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
当中。WEB_STAT.sql的内容例如以下:
运行以上命令后,查看phoenix中的表:
Phoenix支持模糊查询:
查看HBase中的表,例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2wxMDF5ang=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
就可以通过Phoenix这个构建在HBase之上的SQL中间层,向HBase发送标准sql语句。对HBase进行操作。
Phoenix——实现向HBase发送标准SQL语句的更多相关文章
- 标准sql语句,学习
标准SQL语句总结标准SQL语句总结,标准SQL语言基本上适用于下面所列出的数据库软件 -------------------------------------------------------- ...
- 常用的标准SQL 语句
1.创建数据库的语句如下: Create database databaseName 上述语句创建一个名字叫 databaseName 的数据库2.删除数据库的语句如下. Drop database ...
- 标准SQL语句大全【持续更新】(navicat12版亲测有效)
提示:用ctrl+F快速查找相关指令哦 -- 创建数据库 create database test_sql; -- 修改数据库名称(只有 sysadmin 和 dbcreator 固定服务器角色的成员 ...
- 一个标准sql语句模板
select distinct top n * from t1 inner join t2 on ... join t3 on ... where ... group by ... having .. ...
- Oracle系统表整理+常用SQL语句收集
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- 重温sql语句中的join操作
1.join语句 Sql join语句用来合并两个或多个表中的记录.ANSI标准SQL语句中有四种JOIN:INNER,OUTER,LEFTER,RIGHT,一个表或视图也可以可以和它自身做JOIN操 ...
- MySql数据库3【优化2】sql语句的优化
1.SELECT语句优化 1).利用LIMIT 1取得唯一行[控制结果集的行数] 有时,当你要查询一张表是,你知道自己只需要看一行.你可能会去的一条十分独特的记录,或者只是刚好检查了任何存在的记录数, ...
- SQL点滴2—重温sql语句中的join操作
原文:SQL点滴2-重温sql语句中的join操作 1.join语句 Sql join语句用来合并两个或多个表中的记录.ANSI标准SQL语句中有四种JOIN:INNER,OUTER,LEFTER,R ...
- 《万能数据库查询分析器》实现使用SQL语句直接高效地访问文本文件
<万能数据库查询分析器>实现使用SQL语句直接高效地访问文本文件 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 摘要 用SQL语句来直接访问文本文件?是在做梦吗? ...
随机推荐
- html5 canvas 运行起来绝对让你震撼!
从一个大神那看到的,拷贝过来跟大家分享下! html <canvas></canvas> *{margin:0;padding:0;}body{background:#222; ...
- C语言负数的除法和求余运算
假定我们让 a 除以 b,商为 q,余数为 r: q = a / b; r = a % b; 这里,不妨假定 b 大于 0. 我们希望 a.b.q.r 之间维持怎样的关系呢? 1.最重的一点,我们希望 ...
- Microsoft Azure 上的自定义数据和 Cloud-Init
自定义数据是什么? 客户经常询问如何才能在配置Microsoft Azure 虚拟机时插入脚本或其他元数据.在其他云中,这个概念通常称为用户数据.MicrosoftAzure 中也有一项类似的功 ...
- UVALive 6947 Improvements(DP+树状数组)
[题目链接] https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=sho ...
- hdu 4497 GCD and LCM(2013 ACM-ICPC吉林通化全国邀请赛——题目重现)
质分解 + 简单计数.当时去比赛的时候太年轻了...这道题都没敢想.现在回过头来做了一下,发现挺简单的,当时没做这道题真是挺遗憾的.这道题就是把lcm / gcd 质分解,统计每个质因子的个数,然后 ...
- ajax异步通讯 遮罩滚动栏,防止并发及误操作
加入滚动栏的遮罩,滚动栏图片须要自己调整路径 function loading() { var divloading = "<div id=\"loadingdiv\&quo ...
- hdu 4738 Caocao's Bridges(2013杭州网络赛丶神坑)
就是求最小权值的桥..不过有好几个坑... 1:原图不连通,ans=0. 2: m<=n^2 显然有重边,重边必然不是桥,处理重边直接add(u, v, INF). 3: 最小桥边权为0的时 ...
- php使用mysql扩展库链接mysql数据库(查询)
php链接数据库可以使用mysql扩展库,mysqli,pdo这几种方式,相比java而言要麻烦一点,因为它不像java那么统一.从代码的难易程度来说php的确要简单许多.步骤大体如下 1.打开数据库 ...
- android UI进阶之用【转】
android UI进阶之用ViewPager实现欢迎引导页面 摘要: ViewPager需要android-support-v4.jar这个包的支持,来自google提供的一个附加包.大家搜下即可. ...
- CSS通用编码规范
CSS通用编码规范 总结一部分前端编码规范,CSS部分先奉上,大多比较通用,应该是主流方式吧. 1 前言 本文档的目标是使 CSS 代码在团队中风格保持一致,容易被理解和被维护. 尽管本文档是针对 C ...