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这个属性非常重要以后慢慢测试。






### Apache Phoenix 安装方法 #### 使用 Archive 文件安装 可以通过 `mix` 工具来安装 Phoenix 的 archive 文件。以下是具体的命令: ```bash $ mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez ``` 此方式适用于特定场景下的开发环境快速搭建[^2]。 #### 手动解压安装包 对于生产环境或者更复杂的部署需求,可以手动下载并解压 Phoenix 的二进制文件至指定路径。具体操作如下: 1. 将安装包上传到 HBase 集群中的某个服务器 `/export/softwares` 目录下。 2. 解压缩安装包: ```bash tar zxvf apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz -C /export/servers/ ``` 3. 对解压后的目录进行重命名以便于管理: ```bash mv apache-phoenix-4.14.0-cdh5.14.2-bin/ phoenix ``` 4. 根据实际需求完成必要的配置工作[^3]。 #### Conda 环境安装 如果倾向于使用 Python 虚拟环境,则可通过 Anaconda 来简化依赖项管理和版本控制过程。执行以下指令即可创建一个新的虚拟环境,并在此环境中安装 Arize-Phoenix 组件: ```bash conda create -n phoenix_env python=3.7 conda activate phoenix_env conda install -c conda-forge arize-phoenix ``` 这种方法特别适合数据分析类应用场景,在此类场合中经常需要用到高级统计分析工具集支持的数据处理框架[^4]。 #### Docker 方式安装 为了进一步降低跨平台兼容性和资源隔离方面的复杂度,推荐采用官方维护好的镜像通过容器化技术实现一键启动服务实例。详情参见相关文档说明部分关于如何利用 docker-compose.yml 文件定义所需的服务组件及其交互关系等内容描述[^4]。 #### JDBC 连接设置 当完成了上述任意一种形式的基础架构准备工作之后,还需要正确设定客户端访问参数才能正常开展业务逻辑编码活动。典型的 URL 构造模式如下所示: ``` jdbc:phoenix:[<zookeeper quorum>[:<port>][:<root node>]] ``` 这里提到的 props 属性集合允许开发者自定义更多高级选项以满足个性化定制诉求[^5]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值