• HBase 2.x ---- 整合 Phoenix


    1. Phoenix简介

    1. Phoenix定义

    Phoenix 是 HBase 的开源 SQL 皮肤。可以使用标准 JDBC API 代替 Base 客户端 API 来创建表,插入数据和查询 HBase 数据。

    2. 为什么使用 Phoenix

    官方给的解释为:在 Client 和 HBase 之间放一个 Phoenix 中间层不会减慢速度,因为用户编写的数据处理代码和 Phoenix 编写的没有区别(更不用说你写的垃圾的多),不仅如此 Phoenix 对于用户输入的 SQL 同样会有大量的优化手段(就像 hive 自带 sql 优化器一样)。
    Phoenix 在 5.0 版本默认提供有两种客户端使用(瘦客户端和胖客户端),在 5.1.2 版本安装包中删除了瘦客户端,本文也不再使用瘦客户端。而胖客户端和用户自己写 HBase 的 API 代码读取数据之后进行数据处理是完全一样的。

    2. Phoenix 快速入门

    1. 安装

    1)官网地址
    在这里插入图片描述
    https://phoenix.apache.org/

    2)Phoenix部署

    1. 上传并解压 tar 包
    [fickler@hadoop102 software]$ tar -zxvf phoenix-hbase-2.4-5.1.2-bin.tar.gz -C /opt/module/
    [fickler@hadoop102 module]$ mv phoenix-hbase-2.4-5.1.2-bin/ phoenix
    
    • 1
    • 2
    1. 复制 server 包拷贝到各个节点的 hbase/lib
    [fickler@hadoop102 phoenix]$ cp phoenix-server-hbase-2.4-5.1.2.jar /opt/module/hbase/lib/
    [fickler@hadoop102 phoenix]$ xsync /opt/module/hbase/lib/ phoenix-server-hbase-2.4-5.1.2.jar
    
    • 1
    • 2
    1. 配置环境变量
    #phoenix
    export PHOENIX_HOME=/opt/module/phoenix
    export PHOENIX_CLASSPATH=$PHOENIX_HOME
    export PATH=$PATH:$PHOENIX_HOME/bin
    
    • 1
    • 2
    • 3
    • 4
    1. 重启 HBase
    [fickler@hadoop102 phoenix]$ stop-hbase.sh
    [fickler@hadoop102 phoenix]$ start-hbase.sh
    
    • 1
    • 2
    1. 连接 Phoenix
    [fickler@hadoop102 phoenix]$ /opt/module/phoenix/bin/sqlline.py
    
    • 1

    2. Phoenix Shell 操作

    1. table

    关于 Phoenix 的语法建议使用时直接查看官网:https://phoenix.apache.org/language/index.html

    1)显示所有表

    !table 或 !tables
    
    • 1

    在这里插入图片描述
    2)创建表
    直接指定单个列作为 RowKey

    CREATE TABLE IF NOT EXISTS student(
    id VARCHAR primary key,
    name VARCHAR,
    age BIGINT,
    addr VARCHAR);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    在 Phoenix 中,表名等会自动转换为大写,若要小写,使用双引号,如"us_population"。
    指定多个列的联合作为 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));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注:Phoenix 中建表,会在 HBase 中创建一张对应的表。为了减少数据对磁盘空间的占用,Phoenix 默认会对 HBase 中的列名做编码处理。若不想对列名编码,可在建表语句末尾加上 COLUMN_ENCODED_BYTES = 0;
    在这里插入图片描述

    3)插入数据

    upsert into student values('1001','zhangsan', 10, 'beijing');
    
    • 1

    4)查询记录

    select * from student;
    select * from student where id='1001';
    
    • 1
    • 2

    5)删除记录

    delete from student where id='1001';
    
    • 1

    6)删除表

    drop table student;
    
    • 1

    7)退出命令

    !quit
    
    • 1
  • 相关阅读:
    Python-VBA编程500例-033(入门级)
    Python第二语言(三、Python函数def)
    如何快速上手短视频创作,有什么建议吗?
    vsCode 忽略 文件上传
    多线程知识点总结之温故而知新
    SQL中WITH AS语法的使用
    PMP每日一练 | 考试不迷路-11.10(包含敏捷+多选)
    告别BeanUtils,Mapstruct从入门到精通
    【毕业设计】基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机
    互联网突破和 SD-WAN
  • 原文地址:https://blog.csdn.net/qq_52354698/article/details/127615787