哪个网站可以接工程做,丹徒网站建设,设计一个个人网站的基本步骤,网站关键词推广方案1 概述 Phoenix 是 HBase 的开源 SQL 皮肤。可以使用标准 JDBC API 代替 HBase 客户端 API 来创建表#xff0c;插入数据和查询 HBase 数据。 Phoenix 在 5.0 版本默认提供有两种客户端使用#xff08;瘦客户端和胖客户端#xff09;#xff0c;在 5.1.2 版本 安装包中…1 概述 Phoenix 是 HBase 的开源 SQL 皮肤。可以使用标准 JDBC API 代替 HBase 客户端 API 来创建表插入数据和查询 HBase 数据。 Phoenix 在 5.0 版本默认提供有两种客户端使用瘦客户端和胖客户端在 5.1.2 版本 安装包中删除了瘦客户端本文也不再使用瘦客户端。而胖客户端和用户自己写 HBase 的 API 代码读取数据之后进行数据处理是完全一样的。
2 安装部署
2.1 官网下载
http://phoenix.apache.org/
2.2 解压
tar -zxvf phoenix-hbase-2.4-5.1.2- bin.tar.gz -C /opt/module/
mv phoenix-hbase-2.4-5.1.2-bin/ phoenix 2.3 复制 server 包并拷贝到各个节点的 hbase/lib cd /opt/module/phoenix/cp phoenix-server-hbase-2.4-5.1.2.jar /opt/module/hbase/lib/sh /root/bin/xsync /opt/module/hbase/lib/ phoenixserver-hbase-2.4-5.1.2.jar 2.4 配置环境变量
#PHOENIX
export PHOENIX_HOME/opt/module/phoenix
export PHOENIX_CLASSPATH$PHOENIX_HOME
export PATH$PATH:$PHOENIX_HOME/binsource /etc/profile2.5 重启 HBase
stop-hbase.sh
start-hbase.sh2.6 连接phoenix
/opt/module/phoenix/bin/sqlline.py hadoop102,hadoop103,hadoop104:2181
3 Phoenix Shell
关于 Phoenix 的语法建议使用时直接查看官网 https://phoenix.apache.org/language/index.htmlPhoenix 中建表会在 HBase 中创建一张对应的表。为了减少数据对磁盘空间的占 用Phoenix 默认会对 HBase 中的列名做编码处理。具体规则可参考官网链接 https://phoenix.apache.org/columnencoding.html若不想对列名编码可在建表语句末尾加 上 COLUMN_ENCODED_BYTES 0;在 phoenix 中表名等会自动转换为大写若要小写使用双引号,如us_population。
3.1 显示所有表
!table 3.2 创建表
3.2.1 直接指定单个列作为 RowKey
CREATE TABLE IF NOT EXISTS student(
id VARCHAR primary key,
name VARCHAR,
age BIGINT,
addr VARCHAR);3.2.2 指定多个列的联合作为 RowKey
CREATE TABLE IF NOT EXISTS student1 (
id VARCHAR NOT NULL,
name VARCHAR NOT NULL,
age BIGINT,
addr VARCHAR
CONSTRAINT my_pk PRIMARY KEY (id, name));3.3 插入数据
upsert into student values(1001,zhangsan, 10, beijing);3.4 查询记录
select * from student;
select * from student where id1001;3.5 删除记录
delete from student where id1001;3.6 删除表
drop table student;3.7 退出命令行
!quit4 表映射 默认情况下 HBase 中已存在的表通过 Phoenix 是不可见的。如果要在 Phoenix 中操 作 HBase 中已存在的表可以在 Phoenix 中进行表的映射。映射方式有两种视图映射和表 映射。 create test,info1,info24.1 视图映射 Phoenix 创建的视图是只读的所以只能用来做查询无法通过视图对数据进行修改等 操作。在 phoenix 中创建关联 test 表的视图
create view test(id varchar primary key,info1.name varchar,info2.address varchar
);4.2 表映射 在 Pheonix 创建表去映射 HBase 中已经存在的表是可以修改删除 HBase 中已经存在 的数据的。而且删除 Phoenix 中的表那么 HBase 中被映射的表也会被删除。 注进行表映射时不能使用列名编码需将 column_encoded_bytes 设为 0。
create table test(id varchar primary key,info1.name varchar,info2.address varchar
) column_encoded_bytes0;
5 Phoenix JDBC 操作
5.1 依赖
dependenciesdependencygroupIdorg.apache.phoenix/groupIdartifactIdphoenix-client-hbase-2.4/artifactIdversion5.1.2/version/dependency
/dependencies5.2 代码
import java.sql.*;
import java.util.Properties;public class PhoenixClient {public static void main(String[] args) throws SQLException {// 标准的 JDBC 代码// 1.添加链接String url jdbc:phoenix:hadoop102,hadoop103,hadoop104:2181;// 2. 创建配置// 没有需要添加的必要配置 因为 Phoenix 没有账号密码Properties properties new Properties();// 3. 获取连接Connection connection DriverManager.getConnection(url,properties);// 5.编译 SQL 语句PreparedStatement preparedStatement connection.prepareStatement(select * from student);// 6.执行语句ResultSet resultSet preparedStatement.executeQuery();// 7.输出结果while (resultSet.next()) {System.out.println(resultSet.getString(1) : resultSet.getString(2) : resultSet.getString(3));}// 8.关闭资源connection.close();// 由于 Phoenix 框架内部需要获取一个 HBase 连接,所以会延迟关闭// 不影响后续的代码执行System.out.println(hello);}
}