一、软件下载
1、访问:http://phoenix.apache.org/
2、点击:
3、进入以下内容:点击
4、跳转到
5、跳转到
6、点击安装包,进入
点击进行下载:
二、安装
phonenix主要是与hbase进行集成,也可以称之为hbase sql的框架。
进入到phonenix的解压文件夹中,将phoenix-core-4.13.1-HBase-1.2server.jar
复制到hbase中的lib目录下。重启hbase
三、使用客户端
下载http://squirrel-sql.sourceforge.net/
点击出现以下界面:
下载之后在
进入到当前目录。运行java –jar squirrel-sql-3.8.0-standard.jar
进入下一步:
进入到安装目录:
四、客户端集成Hbase
1、 将phoenix的client包复制到工具的lib目录
2、让工具可以加载我们的phoneix的连接,加入驱动
操作:
点击创建与hbase的连接:
创建一张表:
五、可能会遇到的问题
1、 无法看到之前已经创建的表
创建一张与hbase同名的表,或者直接创建一张视图表
2、 phoenix创建的表,手动put之后,查询不到数据
因为phoenix与java创建表之后,phoenix创建的表名不全大写,就算sql中写的小写也是一样会转成大写
3、 如果解决创建表时表名为大写
如果之前已经有一个小写的表名,如何解决关联问题?
注意:表名一定要加双引号,不然会将语句自动转为全大写的。
4、 单引号与双引号的区分
4.1:当值上面加上双引号会查询不到你想要的结果
目前创建的表可以在hbase中查看
1、当我们通过工具创建一张表之后,无法知道该表的列族。但是要使用put的时候,又需要指定列族名?
可以通过界面或者是desc命令的方式查看,默认创建的列族名为"0"
2、当在hbase shell中put了相应的数据之后,但是在工具里面没有看到相应的数据?
可以发现hbase中的列名字是要区分大小写。?????
3、当hbase中已经有表,但是在工具里面是看不到该表的?
解决办法,创建一张同名的表
当然后工具创建表的时候,会将表名全部改为大写。
如果hbase中的表所有的字母全是大写的话,工具在创建的时候会自动关联。
如果hbase中是有非字母全大写的话,可以在工具中创建时为表名写上【双引号】
4、数据关联
如果是先在hbaes中创建的表,在到工具中去创建的时候,需要为字段加上列族名
create table "java_table3"(
"pkid" varchar(512) primary key,
"cf01"."name" varchar(512)
)
如果是通过工具直接创建的话,也需要加上列族名,不然会用0来作为列族,但是数据关联不上。
只能操作结构化的数据,在结构化之外的字段是查询不了的
六、java操作
<dependency> <groupId>org.apache.phoenix</groupId> <artifactId>phoenix-core</artifactId> <version>4.13.1-HBase-1.2</version> </dependency>
Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); String url = "jdbc:phoenix:master,slave01,slave02"; Connection conn = DriverManager.getConnection(url); PreparedStatement preparedStatement = conn.prepareStatement("select * from "java_table2""); ResultSet resultSet = preparedStatement.executeQuery(); while(resultSet.next()){ System.out.println(resultSet.getString(1)); } resultSet.close(); preparedStatement.close(); conn.close();