如果集群不允许Eclipse远程连接,则jdbc的测试需要打包后丢到集群上:
java-Djava.ext.dirs=/home/hbase/hbase-0.94.14/lib/:/home/hbase/hbase-0.94.14/ -jar PhoenixCRUD.jar
Phoenix 的创建表,索引,查询基本没什么可说,测试了下,百万级数据的聚合查询,建索引比不建索引查询时间能提高一倍以上。
官网的sql语法结构说明跟Oracle官方文档的类似。
关于phoenix的动态列:
例如有官网上描述的业务需求,创建表时只给了事件字段,但事件的具体属性由于事件的不同而不同,因此事件的属性需要创建phoenix的动态列,
创建表:
CREATE TABLEEventLog (
eventId BIGINT NOT NULL,
eventTime TIME NOT NULL,
eventType CHAR(3) NOT NULL
CONSTRAINT pk PRIMARY KEY (eventId,eventTime))
然后在插入表时:
upsert intotablename(eventid,eventtime,eventtype,status1 varchar)values(1,date,'001','s1');
那么在查询时就可以这样查询:
selecteventid,status1 from tablename(status1 varchar)
在hbase shell里scan一下表,会看到status1 是作为hbase的一个列插进表里了。
但在phoenix端做select * from tablename ,不会看到status1。要同过上面那种格式的查询才能看到。
关于phoenix源码构建成Eclipse项目比较简单:
直接在Eclipse导入maven项目即可,不像hadoop,hbase需要在linux环境构建。
或者:
mvn eclipse:eclipse-DskipTests -X
构建完项目有个类还有错误,还要安装个antler 的 phoenix sql解析器,直接在core项目上运行即可:
mvn install-DskipTests