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语句来直接访问文本文件?是在做梦吗? ...
随机推荐
- BZOJ 1565: [NOI2009]植物大战僵尸( 最小割 )
先拓扑排序搞出合法的, 然后就是最大权闭合图模型了.... --------------------------------------------------------------------- ...
- ActiveMQ的入门demo
步骤: 1 :下载ActiveMQ 官网:http://activemq.apache.org/ 2 :解压AcitveMQ, 根据自己的操作系统选择运行win64或者win32下的activemq. ...
- Ubuntu Server修改IP、DNS、hosts
本文记录下Ubuntu Server 16.04修改IP.DNS.hosts的方法 -------- 1. Ubuntu Server 修改IP sudo vi /etc/network/interf ...
- .NET 条件查询实现--类似网上商城宝贝搜索
需要实现的效果:点击表格列头:弹出一个层,用户可以输入当前列头的查询条件,点击确定之后,把该列头的查询信息显示在页面顶部,用户可以叉掉这个查询条件,恢复到查询之前的数据. 大致实现的效果图: 项目背景 ...
- VC中使用GetModuleFileName获取应用程序路径
.\\与API函数GetModuleFileName获取应用程序目录有何不一样? 采用.\\也能获得应用程序目录,采用GetModuleFileName也能获得,二者有何不同? 一样!一个是相对路 ...
- JAVA FILE or I/O学习 - 补充CopyFiles功能
public class CopyFiles { public static void main(String[] args) { CopyFiles copyFiles = new CopyFile ...
- Android 开发佳站【转】
Android控件拖动 这里演示控件拖动的动画: 原理就是响应控件的Touch事件,在Touch事件中对移动进行处理,注意,一定要在布局文件中设置控件的 android:clickable=& ...
- Android Develop【转】
[Android Develop] Android实现伸缩弹力分布菜单效果 摘要: 本文介绍下在Android中实现伸缩弹力分布菜单效果.关于这种菜单效果在IPhone中比较常见,效果比较酷.那么 ...
- python 命令行参数,以及文件操作
#demo.py #!/usr/bin/python import sys print sys.argv #python demo.py 11 22 33 44 55 ['demo.py', '11' ...
- 介绍 - OC中的代理模式
一,代理设计模式的场合: 当对象A发生了一些行为,想告知对象B (让对象B成为对象A的代理对象) 对象B想监听对象A的一些行为 (让对象B成为对象A的代理对象) 当对象A无法处理某些行为的时候,想让对 ...