phoenix学习第一节

总览

phoenix是低延迟的基于hadoop的OLTP服务,支持标准的sql和全部的事务4要素,它是在nosql的hbase基础上添加元数据完成的,而且元数据保存在hbase的表中。

sql的支持

apche phoenix 将标准的sql编译成为hbase的scans,并且将结果数据转换成标准的jdbc结果集合。支持的sql包括,select、from、where、group by、having、order by 等等。并且支持全部的DML命令。以下是现在版本不支持的功能,关联操作和内置函数 functions 。

连接方式

第一种方式直连:

Connection conn = DriverManager.getConnection("jdbc:phoenix:server1,server2:3333",props);

jdbc:phoenix:thin:url=http://queryserver.domain:8765;serialization=PROTOBUF;authentication=SPENGO;principal=phoenix@EXAMPLE.COM;keytab=/etc/security/keytabs/phoenix.keytab

第二种使用zookeeper连接

jdbc:phoenix [ :<zookeeper quorum> [ :<port number> [ :<root node> [ :<principal> [ :<keytab file> ] ] ] ] ] 

jdbc:phoenix:zookeeper1.domain,zookeeper2.domain,zookeeper3.domain:2181:/hbase-1:phoenix@EXAMPLE.COM:/etc/security/keytabs/phoenix.keytab

事务支持从4.7.0的发布版

Schema的支持情况

pheonix的sql支持页面 http://phoenix.apache.org/language/index.html

1.当执行创建表的语句是,自动在hbase创建表和列族。

2.可以映射已经存在的hbase表,通过创建读写表,或者是只读试图view,但是二进制数据类型要和pheonix的数据类型一致。

   对于读写表来说,如果没有对应的列族程序将自动创建,如果是只读试图,那么必须有所有列

视图

Phoenix支持表上的可更新视图,这种独特的功能可以利用HBase的无模式功能来添加列。所有视图都共享相同的底层物理HBase表,甚至可以独立索引。后面可以详细介绍。

 多租户

phoenix建立在视图支持之上,也支持多租户。与视图一样,多租户视图可以添加专门为该用户定义的列。

Schema at Read-time 实时变换的列

相对表的特性,容许查询是在定义列,这个是为了解决在创建表的时候无法确定列的场景,参考地址:http://phoenix.apache.org/dynamic_columns.html

 样例1:

SELECT eventTime, lastGCTime, usedMemory, maxMemory
FROM EventLog(lastGCTime TIME, usedMemory BIGINT, maxMemory BIGINT)
WHERE eventType = 'OOM' AND lastGCTime < eventTime - 1

查询是添加表列

样例2:

UPSERT INTO EventLog (eventId, eventTime, eventType, lastGCTime TIME, usedMemory BIGINT, maxMemory BIGINT) VALUES(1, CURRENT_TIME(), ‘abc’, CURRENT_TIME(), 512, 1024);

插入数据是添加列

Salting 盐化

表可以声名盐化,防止一个分区过热。你只需要声名多少个盐桶就可以了。phoenix将帮你管理盐化。详细特性地址:http://phoenix.apache.org/salted.html  http://phoenix.apache.org/performance.html#salting

hbase顺序写入可能遭遇region server的热点问题,如果你的rowkey单调递增的。通过盐化可以解决这个问题,见表属性为SALT_BUCKETS  取值范围 1-256。建表样例如下:

CREATE TABLE table (a_key VARCHAR PRIMARY KEY, a_col VARCHAR) SALT_BUCKETS = 20;

 phoenix.query.rowKeyOrderSaltedTable这个属性非常重要以后慢慢测试。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值