1.phoenix安装
------------------
1.安装phoenix
a)下载apache-phoenix-4.10.0-HBase-1.2-bin.tar.gz 下载网址:https://phoenix.apache.org/download.html
b)tar 解压压缩包
c)复制xxx-server.jar到hbase的lib目录,并且分发 ,删除以前的phoenixjar包。
d)重启hbase
2.使用phoenix的命令行程序
$>/apps/phoenix-4.14.1-HBase-1.2/bin/sqlline.py master //启动phoenix
$phoenix>!tables //查看表 这里面都是phoexi自己的系统表默认
$phoenix>!help //查看帮助
2.SQL Client安装 phoenix图形化界面
a)下载squirrel-sql-3.7.1-standard.jar 下载链接:http://squirrel-sql.sourceforge.net/
该文件是安装文件,执行的安装程序。
$>jar -jar squirrel-sql-3.7.1-standard.jar
$>下一步...
b)复制phoenix-4.10.0-HBase-1.2-client.jar到SQuerrel安装目录的lib下(c:myprogramssquirrel)。
c)启动SQuirrel(GUI)
定位安装目录->执行squirrel-sql.bat
d)打开GUI界面
d)在左侧的边栏选中"Drivers"选项卡,
点击 "+" ->
Name: clc
ExampleURL : jdbc:phoenix:192.168.231.202
Driverclass : org.apache.phoenix.jdbc.PhoenixDriver
d)测试。
3.SQLLine客户端操作
//建表
$jdbc:phoenix>create table IF NOT EXISTS test.Person (IDCardNum INTEGER not null primary key, Name varchar(20),Age INTEGER);
//插入数据 插入和更新的SQL关键字都是upsert
$jdbc:phoenix>UPSERT INTO test.PERSON(IDCardNum , Name,Age) VALUES (1,'tom',12);
//删除数据
$jdbc:phoenix>delete from test.persion where idcardnum = 1 ;
//更新数据
$upsert into test.PERSON(IDCardNum , Name,Age) VALUES (1,'tom',12);
2.注意
2.1
Phoenix 无法自动识别 HBase 中原有的表,所以需要将 HBase 中已有的做映射,才能够被 Phoenix 识别并操作。说白了就是要需要告诉 Phoenix 一声 xx 表的 xx 列是主键,xx 列的数据类型。
2.2
如果你使用的是 Phoenix 4.10 及以上的版本,映射表过后可能会遇到查不出数据的情况
CREATE TABLE "test_table" ( "ROW" varchar primary key, "0"."name" varchar) column_encoded_bytes=0;
解决办法:https://blog.csdn.net/Colton_Null/article/details/83387995
2.3
我们在Phoeix中建立的表都默认建立在HBase default名字空间中的
2.4
Phoenix查询报错总结以及解决办法
https://www.jianshu.com/p/a3c24638b498
3.二级索引
https://www.cnblogs.com/haoxinyue/p/6724365.html
4.在Java项目中集成Phoenix
4.1在Java项目中实现Phoenix操作Hbase,maven引入Phoenix的依赖包:
<dependency> <groupId>org.apache.phoenix</groupId> <artifactId>phoenix-core</artifactId> <version>4.9.0-HBase-1.1</version> </dependency>
4.2但是引入这个包是不够的,还需要另外引入一个依赖包phoenix-4.9.0-HBase-1.1-client.jar,这个依赖包可以在Phoenix文件中找到,也可以通过下载Phoenix源码,自行编译后导入,自此就可以通过java的JDBC访问操作Hbase。
java测试的源码如下:
public static void main(String args[]) { Connection connection = null; Statement statement = null; try { Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); connection = DriverManager.getConnection("jdbc:phoenix:master:2181","",""); statement = connection.createStatement(); statement.execute("upsert into yinxiang_note values (3, 'note of huhong')"); } catch (Exception e) { e.printStackTrace(); } finally { try { connection.close(); statement.close(); } catch (Exception e) { e.printStackTrace(); } } }