写在前面一:

本文总结基于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语句的更多相关文章

  1. 标准sql语句,学习

    标准SQL语句总结标准SQL语句总结,标准SQL语言基本上适用于下面所列出的数据库软件 -------------------------------------------------------- ...

  2. 常用的标准SQL 语句

    1.创建数据库的语句如下: Create database databaseName 上述语句创建一个名字叫 databaseName 的数据库2.删除数据库的语句如下. Drop database ...

  3. 标准SQL语句大全【持续更新】(navicat12版亲测有效)

    提示:用ctrl+F快速查找相关指令哦 -- 创建数据库 create database test_sql; -- 修改数据库名称(只有 sysadmin 和 dbcreator 固定服务器角色的成员 ...

  4. 一个标准sql语句模板

    select distinct top n * from t1 inner join t2 on ... join t3 on ... where ... group by ... having .. ...

  5. Oracle系统表整理+常用SQL语句收集

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  6. 重温sql语句中的join操作

    1.join语句 Sql join语句用来合并两个或多个表中的记录.ANSI标准SQL语句中有四种JOIN:INNER,OUTER,LEFTER,RIGHT,一个表或视图也可以可以和它自身做JOIN操 ...

  7. MySql数据库3【优化2】sql语句的优化

    1.SELECT语句优化 1).利用LIMIT 1取得唯一行[控制结果集的行数] 有时,当你要查询一张表是,你知道自己只需要看一行.你可能会去的一条十分独特的记录,或者只是刚好检查了任何存在的记录数, ...

  8. SQL点滴2—重温sql语句中的join操作

    原文:SQL点滴2-重温sql语句中的join操作 1.join语句 Sql join语句用来合并两个或多个表中的记录.ANSI标准SQL语句中有四种JOIN:INNER,OUTER,LEFTER,R ...

  9. 《万能数据库查询分析器》实现使用SQL语句直接高效地访问文本文件

    <万能数据库查询分析器>实现使用SQL语句直接高效地访问文本文件 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 摘要    用SQL语句来直接访问文本文件?是在做梦吗? ...

随机推荐

  1. ROS中编辑文件命令行工具rosed

    rosed是rosbash套件中的一个,它允许我们通过包名直接编辑包中的文件,而不是输入包的全部路径. 用法: rosed [package_name] [filename] 例如: rosed ro ...

  2. JS计算两个日期相差几天

    function Computation(sDate1, sDate2){ var aDate, oDate1, oDate2, iDays aDate = sDate1.split("-& ...

  3. 上星期IOS的一个面试题。

    美丽说面试题 1,IOS是怎样进行内存管理的,什么是ARC. 2,声明Property时,assign,nonatomic,readonly,retain,copy(各什么意思,括号里没打印出来,我猜 ...

  4. Android利用广播监听设备安装和卸载应用程序

    MainActivity如下: package cn.testappaddandremove; import android.os.Bundle; import android.app.Activit ...

  5. ios post空文件流导致400错误

  6. C++读写文件流的相关介绍

    掌握文本文件读写的方法了解二进制文件的读写方法 C++文件流:fstream // 文件流ifstream  // 输入文件流ofstream  // 输出文件流 //创建一个文本文件并写入信息//同 ...

  7. swith

    “开关”(Switch)有时也被划分为一种“选择语句”.根据一个整数表达式的值,switch语句可从一系列代码选出一段执行.它的格式如下: switch(整数选择因子) { case 整数值1 : 语 ...

  8. POJ 3311 Hie with the Pie (BFS+最短路+状态压缩)

    题意:类似于TSP问题,只是每个点可以走多次,求回到起点的最短距离(起点为点0). 分析:状态压缩,先预处理各点之间的最短路,然后sum[i][buff]表示在i点,状态为buff时所耗时...... ...

  9. 四核网络机顶盒芯片局势分析(开放市场):rk3128将会成为四核主流

    开放市场:不包含小米.乐视等大品牌闭环生态系统的市场. 今年四核网络播放器以全志的a31s独领风骚.英菲克以绝对优势率先各大白牌品牌公司.只是随着时间的推移,全志的a31s不适应市场主流.因为芯片没有 ...

  10. Problem B: Excuses, Excuses!

    Description Judge Ito is having a problem with people subpoenaed for jury duty giving rather lame ex ...