Phoenix——实现向HBase发送标准SQL语句

时间:2022-05-20 23:41:45

写在前面一:

本文总结基于HBase的SQL查询系统——Salesforce phoenix

Phoenix——实现向HBase发送标准SQL语句

写在前面二:

环境说明:

Phoenix——实现向HBase发送标准SQL语句

一、什么是Phoenix

摘自官网:

Phoenix——实现向HBase发送标准SQL语句

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

出现下面响应,说明成功安装

Phoenix——实现向HBase发送标准SQL语句

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>

Phoenix——实现向HBase发送标准SQL语句

4.3、通过SQLclientSQuirrel訪问

下载地址:http://squirrel-sql.sourceforge.net/

再进行安装配置就可以。

五、使用Phoenix

使用phoenix-3.0.0-incubating.tar.gz自带的数据进行測试

Phoenix——实现向HBase发送标准SQL语句

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2wxMDF5ang=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

当中。WEB_STAT.sql的内容例如以下:

Phoenix——实现向HBase发送标准SQL语句

运行以上命令后,查看phoenix中的表:

Phoenix——实现向HBase发送标准SQL语句

Phoenix——实现向HBase发送标准SQL语句

Phoenix支持模糊查询:

Phoenix——实现向HBase发送标准SQL语句

查看HBase中的表,例如以下:

Phoenix——实现向HBase发送标准SQL语句

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2wxMDF5ang=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

就可以通过Phoenix这个构建在HBase之上的SQL中间层,向HBase发送标准sql语句。对HBase进行操作。