HBase-8.phoenix介绍
2016-02-12 10:18
260 查看
1、phoenix是什么?
Apache Phoenix 是运行在Hbase之上的高性能关系型数据库,通过Phoenix可以像使用jdbc访问关系型数据库一样访问hbase。
Phoenix,操作的表以及数据存储在hbase上。phoenix只需要和hbase进行表关联。然后在用工具进行一些读写操作。
可以把Phoenix 只看成一种代替Hbase语法的工具。虽然Java可以用jdbc来连接phoenix,然后操作hbase,但是在生产环境中,不可以用OLTP中。
phoenix在查询hbase时,虽然做了一些优化,但是延迟还是不小。所以依然用在OLAT中,在将结果返回存储下来。
说明:
当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果.
哪些公司在使用phoenix?
2、phoenix安装和使用
下面给出phoenix的按照和使用,官方网站地址请参考: http://phoenix.apache.org/Phoenix-in-15-minutes-or-less.html
安装
(1)下载对应的hbase版本的phoenix(phoenix-4.6.0-HBase-0.98-bin.tar.gz)
hbase和phoenix兼容性
Phoenix 2.x-HBase 0.94.x
Phoenix 3.x-HBase 0.94.x
Phoenix 4.x-HBase 0.98.1+
(2)解压后,复制the phoenix server jar 到 每个regionserver的lib目录下
tar -zxvf phoenix-4.6.0-HBase-0.98-bin.tar.gz
(3)重新启动region servers
(4)添加 the phoenix client jar 到 the classpath of your HBase client
(5)下载并安装SQuirrel作为SQL client,然后与HBase cluster进行SQL交互
启动
在phoenix的bin目录下,执行sqlline.py zk_ip:2181
操作
(1) 输出help查看 帮助并列出介个常见的命令
!help 打印命令的使用说明
!history 显示历史命令
!sql 执行SQL的命令Execute a SQL command
!tables 显示数据库中所有的表
(2)输入!tables 显示所有表
表的操作
(1)表创建和查询
首先,创建 us_population.sql 文件,主要包含表定义:
然后,创建us_population.csv文件,包含表数据
最后,创建us_population_queries.sql文件,主要用于查询数据的SQL语句
通过如下命令在终端执行
执行结果:
St City Count Population Sum
-- ---------------------------------------- ----------------------------------------
NY 1 8143197
CA 3 6012701
TX 3 4486916
IL 1 2842518
PA 1 1463281
AZ 1 1461575
通过psql.py命令我们可以发现,然后把脚本存储到shell文件中,然后通过改命令执行。例如:单独执行一个命令
(2) 插入数据
upsert into us_population(state,city,population) values('NY','DN',200);
3、phoenix的客户端
phoenix如何使用呢?我们可以把 phoenix看成mysql。phoenix可以在CLI下操作;也可以使用 phoenix的一个客户端工具 Squirrel访问。
Squirrel SQL Client,是一个连接数据库的客户端工具。一般支持JDBC的数据库都可以用它来连接。
(1)phoenix的客户端的安装
通过命令行执行java -jar squirrel-sql-3.7-standard.jar ,然后通过图形化界面进行安装
(2)安装完成后启动,启动界面
(3)需要点击“Drivers”,将phoenix的驱动添加进去。
按上面的顺序,依次填写。第一步Name:随便写 个名字,标记连接;第二步Example URL:相当于mysql的jdbc连接串,这里的alias写zookeeper的主机名称,端口号,可以写,可以不写,我一般不写;第三步选择 phoenix-4.6.0-HBase-0.98-client.jar的jar包;第四步就是手动输入org.apache.phoenix.jdbc.PhoenixDriver。
然后点击OK。
注意: 其中phoenix-4.6.0-HBase-0.98-client.jar驱动包可以在phoenix-4.6.0-HBase-0.98-bin.tar.gz的安装包中获取。
(4)添加别名
(5)连接成功后,双加别名可以查看结果
(6)通过SQL查看来操作SQL语句
4、用Phoenix Java api操作HBase
注意: 需要导入Phoenix的驱动程序对应的jar包(即: phoenix-4.6.0-HBase-0.98-client.jar)
(1)编写Java程序
(2)运行结果
NY 2 8143397
CA 3 6012701
TX 3 4486916
IL 1 2842518
PA 1 1463281
AZ 1 1461575
Apache Phoenix 是运行在Hbase之上的高性能关系型数据库,通过Phoenix可以像使用jdbc访问关系型数据库一样访问hbase。
Phoenix,操作的表以及数据存储在hbase上。phoenix只需要和hbase进行表关联。然后在用工具进行一些读写操作。
可以把Phoenix 只看成一种代替Hbase语法的工具。虽然Java可以用jdbc来连接phoenix,然后操作hbase,但是在生产环境中,不可以用OLTP中。
phoenix在查询hbase时,虽然做了一些优化,但是延迟还是不小。所以依然用在OLAT中,在将结果返回存储下来。
说明:
当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果.
哪些公司在使用phoenix?
2、phoenix安装和使用
下面给出phoenix的按照和使用,官方网站地址请参考: http://phoenix.apache.org/Phoenix-in-15-minutes-or-less.html
安装
(1)下载对应的hbase版本的phoenix(phoenix-4.6.0-HBase-0.98-bin.tar.gz)
hbase和phoenix兼容性
Phoenix 2.x-HBase 0.94.x
Phoenix 3.x-HBase 0.94.x
Phoenix 4.x-HBase 0.98.1+
(2)解压后,复制the phoenix server jar 到 每个regionserver的lib目录下
tar -zxvf phoenix-4.6.0-HBase-0.98-bin.tar.gz
(3)重新启动region servers
(4)添加 the phoenix client jar 到 the classpath of your HBase client
(5)下载并安装SQuirrel作为SQL client,然后与HBase cluster进行SQL交互
启动
在phoenix的bin目录下,执行sqlline.py zk_ip:2181
操作
(1) 输出help查看 帮助并列出介个常见的命令
!help 打印命令的使用说明
!history 显示历史命令
!sql 执行SQL的命令Execute a SQL command
!tables 显示数据库中所有的表
(2)输入!tables 显示所有表
表的操作
(1)表创建和查询
首先,创建 us_population.sql 文件,主要包含表定义:
CREATE TABLE IF NOT EXISTS us_population ( state CHAR(2) NOT NULL, city VARCHAR NOT NULL, population BIGINT CONSTRAINT my_pk PRIMARY KEY (state, city));
然后,创建us_population.csv文件,包含表数据
NY,New York,8143197 CA,Los Angeles,3844829 IL,Chicago,2842518 TX,Houston,2016582 PA,Philadelphia,1463281 AZ,Phoenix,1461575 TX,San Antonio,1256509 CA,San Diego,1255540 TX,Dallas,1213825 CA,San Jose,912332
最后,创建us_population_queries.sql文件,主要用于查询数据的SQL语句
SELECT state as "State",count(city) as "City Count",sum(population) as "Population Sum" FROM us_population GROUP BY state ORDER BY sum(population) DESC;
通过如下命令在终端执行
./psql.py 192.168.2.20:2181 us_population.sql us_population.csv us_population_queries.sql
执行结果:
St City Count Population Sum
-- ---------------------------------------- ----------------------------------------
NY 1 8143197
CA 3 6012701
TX 3 4486916
IL 1 2842518
PA 1 1463281
AZ 1 1461575
通过psql.py命令我们可以发现,然后把脚本存储到shell文件中,然后通过改命令执行。例如:单独执行一个命令
./psql.py 192.168.2.20:2181 us_population_queries.sql
(2) 插入数据
upsert into us_population(state,city,population) values('NY','DN',200);
3、phoenix的客户端
phoenix如何使用呢?我们可以把 phoenix看成mysql。phoenix可以在CLI下操作;也可以使用 phoenix的一个客户端工具 Squirrel访问。
Squirrel SQL Client,是一个连接数据库的客户端工具。一般支持JDBC的数据库都可以用它来连接。
(1)phoenix的客户端的安装
通过命令行执行java -jar squirrel-sql-3.7-standard.jar ,然后通过图形化界面进行安装
(2)安装完成后启动,启动界面
(3)需要点击“Drivers”,将phoenix的驱动添加进去。
按上面的顺序,依次填写。第一步Name:随便写 个名字,标记连接;第二步Example URL:相当于mysql的jdbc连接串,这里的alias写zookeeper的主机名称,端口号,可以写,可以不写,我一般不写;第三步选择 phoenix-4.6.0-HBase-0.98-client.jar的jar包;第四步就是手动输入org.apache.phoenix.jdbc.PhoenixDriver。
然后点击OK。
注意: 其中phoenix-4.6.0-HBase-0.98-client.jar驱动包可以在phoenix-4.6.0-HBase-0.98-bin.tar.gz的安装包中获取。
(4)添加别名
(5)连接成功后,双加别名可以查看结果
(6)通过SQL查看来操作SQL语句
4、用Phoenix Java api操作HBase
注意: 需要导入Phoenix的驱动程序对应的jar包(即: phoenix-4.6.0-HBase-0.98-client.jar)
(1)编写Java程序
try { Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); Connection conn = DriverManager.getConnection("jdbc:phoenix:192.168.2.20:2181"); StringBuffer sb = new StringBuffer(); sb.append("SELECT STATE,COUNT(CITY) AS CityCount,SUM(POPULATION) AS PopulatitionSum FROM US_POPULATION "); sb.append("GROUP BY STATE "); sb.append("ORDER BY SUM(POPULATION) DESC "); Statement pstm = conn.prepareStatement(sb.toString()); ResultSet rs = pstm.executeQuery(sb.toString()); while (rs.next()) { String state = rs.getString("STATE"); int cityCount = rs.getInt("CityCount"); int populatitionSum = rs.getInt("PopulatitionSum"); System.out.println(state + "\t" + cityCount + "\t" + populatitionSum); } } catch (Exception e) { System.err.println("Connection exception .."); e.printStackTrace(); }
(2)运行结果
NY 2 8143397
CA 3 6012701
TX 3 4486916
IL 1 2842518
PA 1 1463281
AZ 1 1461575
相关文章推荐
- 解决博客文字体发暗问题
- java基础19io流
- 2015年年终总结—— Action speak louder than words
- understanding of Pipe line & Timing Logic
- nusoap
- 类与对象
- JavaScript实现点击单元格改变背景色的方法
- 1.1 使用虚拟机搭建linux系统centos7,以及相关操作。
- orchard project 本地化
- OSI 7 layers model
- 春节不打烊网友实测:京东物流谎言被戳破
- ICMP:Internet控制报文协议
- 汇编语言1:基础知识
- 【CODEVS2776】寻找代表元
- 商界黄埔-特种兵训练营
- 树莓派2 从 u盘启动系统实验
- java.lang.NoSuchMethodError: org.apache.hadoop.hive.ql.ppd.ExprWalkerInfo.getConvertedNode
- ELK setup guide
- http VS https
- Servet介绍及其生命周期