Phoenix基本使用

这篇具有很好参考价值的文章主要介绍了Phoenix基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、Phoenix简介

1.1 Phoenix定义

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

1.2 Phoenix特点

  1. 容易集成:如Spark,Hive,Pig,Flume和Map Reduce。
  2. 性能好:直接使用HBase API以及协处理器和自定义过滤器,可以为小型查询提供毫秒级的性能,或者为数千万行提供数秒的性能。
  3. 操作简单:DML命令以及通过DDL命令创建表和版本化增量更改。
  4. 安全功能: 支持GRANT和REVOKE 。
  5. 完美支持Hbase二级索引创建。

1.3 Phoenix架构

phoenixmy software,大数据之Hive,Phoenix

1.4 Phoenix的作用

phoenixmy software,大数据之Hive,Phoenix

2、Phoenix快速入门

2.1 Phoenix安装部署

2.1.1官方网址: http://phoenix.apache.org/index.html

2.1.2 上传jar包到/opt/software/

解压到/opt/module 改名为phoenix

[ybb@hadoop101 module]$ tar -zxvf /opt/software/apache-phoenix-4.14.1-HBase-1.3-bin.tar.gz -C /opt/module 

[ybb@hadoop101 module]$ mv apache-phoenix-4.14.1-HBase-1.3-bin phoenix

2.1.3 复制server和client这俩个包拷贝到各个节点的hbase/lib

在phoenix目录下

[ybb@hadoop101 module]$ cd /opt/module/phoenix/

向每个节点发送server jar

[ybb@hadoop101 phoenix]$ cp phoenix-4.14.1-HBase-1.3-server.jar /opt/module/hbase-1.3.1/lib/
[ybb@hadoop101 phoenix]$ scp phoenix-4.14.1-HBase-1.3-server.jar hadoop102:/opt/module/hbase-1.3.1/lib/
[ybb@hadoop101 phoenix]$ scp phoenix-4.14.1-HBase-1.3-server.jar hadoop103:/opt/module/hbase-1.3.1/lib/

向每个节点发送client jar

[ybb@hadoop101 phoenix]$ cp phoenix-4.14.1-HBase-1.3-client.jar /opt/module/hbase-1.3.1/lib/
[ybb@hadoop101 phoenix]$ scp phoenix-4.14.1-HBase-1.3-client.jar hadoop102:/opt/module/hbase-1.3.1/lib/
[ybb@hadoop101 phoenix]$ scp phoenix-4.14.1-HBase-1.3-client.jar hadoop103:/opt/module/hbase-1.3.1/lib/

2.1.4在root权限下给/etc/profile 下添加如下内容

#phoenix
	export PHOENIX_HOME=/opt/module/phoenix
	export PHOENIX_CLASSPATH=$PHOENIX_HOME
	export PATH=$PATH:$PHOENIX_HOME/bin

2.1.5启动Zookeeper,Hadoop,Hbase

2.1.6启动Phoenix

[ybb@hadoop101 phoenix]$ /opt/module/phoenix/bin/sqlline.py hadoop101,hadoop102,hadoop103:2181

2.2 phoenix表操作

2.2.1 显示所有表

!table 或 !tables

2.2.2 创建表

CREATE TABLE IF NOT EXISTS us_population (
State CHAR(2) NOT NULL,
City VARCHAR NOT NULL,
Population BIGINT
CONSTRAINT my_pk PRIMARY KEY (state, city));

如下显示:
phoenixmy software,大数据之Hive,Phoenix
在phoenix中,默认情况下,表名等会自动转换为大写,若要小写,使用双引号,如"us_population"。

2.2.3 插入记录

upsert into us_population values(‘NY’,‘NewYork’,8143197);

2.2.4 查询记录

select * from us_population ;

select * from us_population wherestate=‘NY’;

2.2.5 删除记录

delete from us_population wherestate=‘NY’;

2.2.6 删除表

drop table us_population;

2.2.7 退出命令行

!quit

2.3 phoenix表映射

2.3.1 Phoenix和Hbase表的关系

默认情况下,直接在hbase中创建的表,通过phoenix是查看不到的。如图1和图2,US_POPULATION是在phoenix中直接创建的,而kylin相关表是在hbase中直接创建的,在phoenix中是查看不到kylin等表的。
phoenixmy software,大数据之Hive,Phoenix
hbase命令行中查看所有表:
phoenixmy software,大数据之Hive,Phoenix
如果要在phoenix中操作直接在hbase中创建的表,则需要在phoenix中进行表的映射。映射方式有两种:视图映射和表映射

2.3.2 Hbase命令行中创建表test

Hbase 中test的表结构如下,两个列簇name、company.
phoenixmy software,大数据之Hive,Phoenix
启动Hbase shell
[ybb@hadoop101 ~]$ /opt/module/hbase-1.3.1/bin/hbase shell

创建Hbase表test
hbase(main):001:0> create ‘test’,‘name’,‘company’

创建表,如下图:

phoenixmy software,大数据之Hive,Phoenix

2.3.3 视图映射

Phoenix创建的视图是只读的,所以只能用来做查询,无法通过视图对源数据进行修改等操作。
在phoenix中创建视图test表

0: jdbc:phoenix:hadoop101,hadoop102,hadoop103> create view "test"(empid varchar primary key,"name"."firstname" varchar,"name"."lastname" varchar,"company"."name" varchar,"company"."address" varchar);

删除视图

0: jdbc:phoenix:hadoop101,hadoop102,hadoop103> drop view "test";

2.3.3 表映射

使用Apache Phoenix创建对HBase的表映射,有两种方法:
1) 当HBase中已经存在表时,可以以类似创建视图的方式创建关联表,只需要将create view改为create table即可。

0: jdbc:phoenix:hadoop101,hadoop102,hadoop103> create table "test"(empid varchar primary key,"name"."firstname" varchar,"name"."lastname" varchar,"company"."name" varchar,"company"."address" varchar);

2) 当HBase中不存在表时,可以直接使用create table指令创建需要的表,系统将会自动在Phoenix和HBase中创建person_infomation的表,并会根据指令内的参数对表结构进行初始化。

0: jdbc:phoenix:hadoop101,hadoop102,hadoop103> create table "test"(empid varchar primary key,"name"."firstname" varchar,"name"."lastname" varchar,"company"."name" varchar,"company"."address" varchar);

2.3.4 使用spark对phoenix的读写

phoenixmy software,大数据之Hive,Phoenix
在Phoenix中查看数据
select * from STOCK_SYMBOL
如下显示:

phoenixmy software,大数据之Hive,Phoenix
在Hbase中查看数据
scan “STOCK_SYMBOL”

phoenixmy software,大数据之Hive,Phoenix

更多使用详情,请参考http://phoenix.apache.org/phoenix_spark.html

2.3.5 视图映射和表映射的对比与总结:

相比于直接创建映射表,视图的查询效率会低,原因是:创建映射表的时候,Phoenix会在表中创建一些空的键值对,这些空键值对的存在可以用来提高查询效率。
使用create table创建的关联表,如果对表进行了修改,源数据也会改变,同时如果关联表被删除,源表也会被删除。但是视图就不会,如果删除视图,源数据不会发生改变。

3、Phoenix创建Hbase二级索引

3.1 配置Hbase支持Phoenix创建二级索引

3.1.1 添加如下配置到Hbase的Hregionserver节点的hbase-site.xml

<!-- phoenix regionserver 配置参数 -->
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>

<property>
<name>hbase.region.server.rpc.scheduler.factory.class</name>
<value>org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory</value>
<description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
</property>

<property>
<name>hbase.rpc.controllerfactory.class</name>
<value>org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory</value>
<description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
</property>

3.1.2 添加如下配置到Hbase中Hmaster节点的hbase-site.xml中

<!-- phoenix master 配置参数 -->
<property>
<name>hbase.master.loadbalancer.class</name>
<value>org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer</value>
</property>

<property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.phoenix.hbase.index.master.IndexMasterObserver</value>
</property>

3.1.3 常见问题汇总:

1)注意:网上配置文档里有这一条,但在实际测试中(测试环境hbase-1.3.1,网上0.98.6),加入该条的regionserver会在hbase启动时失败,对应节点上没有HregionServer进程,去掉该配置后正常启动,且能正常创建local index。

<property>
<name>hbase.coprocessor.regionserver.classes</name>
<value>org.apache.hadoop.hbase.regionserver.LocalIndexMerger</value>
</property>

2)hbase-site.xml的zookeeeper的配置信息不能加2181,否则在创建local index的时候会报以下异常:
phoenixmy software,大数据之Hive,Phoenix

正常配置:

<property>
        <name>hbase.zookeeper.quorum</name>
        <value>hadoop101,hadoop102,hadoop103</value>
</property>

3.2创建索引

3.2.1 phoenix的索引分类

1)global index是默认的索引格式。适用于多读少写的业务场景。写数据的时候会消耗大量开销,因为索引表也要更新,而索引表是分布在不同的数据节点上的,跨节点的数据传输带来了较大的性能消耗。在读数据的时候Phoenix会选择索引表来降低查询消耗的时间。如果想查询的字段不是索引字段的话索引表不会被使用,也就是说不会带来查询速度的提升。
CREATE INDEX my_index ON my_table (my_index)

2)Local index适用于写操作频繁的场景。索引数据和数据表的数据是存放在相同的服务器中的,避免了在写操作的时候往不同服务器的索引表中写索引带来的额外开销。查询的字段不是索引字段索引表也会被使用,这会带来查询速度的提升。
CREATE LOCAL INDEX my_index ON my_table (my_index)

3.2.2 三种提升效率查询方式

1) CREATE INDEX my_index ON my_table (v1) INCLUDE (v2)
2) SELECT /*+ INDEX(my_table my_index) */ v2 FROM my_table WHERE v1 = ‘foo’
3) CREATE LOCAL INDEX my_index ON my_table (v1)

3.2.3 如何删除索引

DROP INDEX my_index ON my_table

4、 Squirrel可视化连接Phoenix

4.1 下载Squirrel的jar包官方网址

http://squirrel-sql.sourceforge.net/

4.2 在Windows环境下安装Squirrel程序

  1. 选择Java方式打开安装

phoenixmy software,大数据之Hive,Phoenix

  1. 自定义安装目录

phoenixmy software,大数据之Hive,Phoenix
3) 一直Next到安装完成

phoenixmy software,大数据之Hive,Phoenix

4.3 配置Squirrel连接到Phoenix

1) 复制Phoenix的client.jar包到D:\work\squirrel\lib的lib下
phoenixmy software,大数据之Hive,Phoenix
2) 启动Squirrel
phoenixmy software,大数据之Hive,Phoenix

3) 配置Driver
phoenixmy software,大数据之Hive,Phoenix

4) 添加Driver具体配置信息

phoenixmy software,大数据之Hive,Phoenix
配置信息:
Name=Phoenix
Example URL = jdbc:phoenix:hadoop101,hadoop102,hadoop103:2181
Java Class Path 选择D:\work\squirrel\lib\phoenix-4.14.1-HBase-1.3-client.jar
Class Name = org.apache.phoenix.jdbc.PhoenixDriver

5)配置Aliases

phoenixmy software,大数据之Hive,Phoenix
6)添加Aliases具体配置信息

phoenixmy software,大数据之Hive,Phoenix
配置信息:
Name=任意
Driver选择刚才添加的Phoenix
URL= jdbc:phoenix:hadoop101,hadoop102,hadoop103:2181
User Name = 任意
Password = 任意

7)测试连接是否成功

phoenixmy software,大数据之Hive,Phoenix
双击连接Phoenix

phoenixmy software,大数据之Hive,Phoenix
8)使用Squirrel查询数据
phoenixmy software,大数据之Hive,Phoenix

查询sql(WEB_STAT表要提前建好并导入数据)
[ybb@hadoop101 bin]$ psql.py …/examples/STOCK_SYMBOL.sql
[ybb@hadoop101 bin]$ psql.py …/examples/STOCK_SYMBOL.csv
select * from WEB_STAT;文章来源地址https://www.toymoban.com/news/detail-816954.html

到了这里,关于Phoenix基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Phoenix】phoenix实现每个Primarykey主键保留N版本数据,CDC数据记录为Changelog格式

    CDC数据中包含了,数据的变更过程。当CDC写入传统数据库最终每一个primary key下会保存一条数据。当然可以使用特殊手段保存多分记录但是显然造成了数据膨胀。 另外数据湖Hudi(0.13.1)是不支持保存所有Changelog其Compaction机制会清除所有旧版本的内容。Iceberg支持TimeTravel,能查到

    2024年02月07日
    浏览(44)
  • 黑马大数据学习笔记4-Hive部署和基本操作

    p48、51、52 https://www.bilibili.com/video/BV1WY4y197g7/?p=48 Hive是分布式运行的框架还是单机运行的? Hive是单机工具,只需要部署在一台服务器即可。 Hive虽然是单机的,但是它可以提交分布式运行的MapReduce程序运行。 我们知道Hive是单机工具后,就需要准备一台服务器供Hive使用即可。

    2024年02月14日
    浏览(48)
  • 大数据开发之Hive(基本概念、安装、数据类型、DDL数据定义、DML数据操作)

    1.1.1 Hive产生背景 HDFS来存储海量的数据、MapReduce来对海量数据进行分布式并行计算、Yarn来实现资源管理和作业调度。但是面对海量的数据和负责的业务逻辑,开发人员要编写MR对数据进行统计分析难度极大,所以就产生了Hive这个数仓工具。Hive可以帮助开发人员将SQL语句转化

    2024年01月17日
    浏览(46)
  • HBase在大数据集群的安装部署及整合Phoenix

    前提:需要保证三台虚拟机hadoop102-104已经部署好基本配置。未完成的可以参考:https://blog.csdn.net/weixin_73195042/article/details/135886619 上传HBase安装包到/opt/software文件夹内 配置环境变量 在末尾添加 使用 source 让配置的环境变量生效 将环境变量分发到其他虚拟机上,并且也要sour

    2024年04月27日
    浏览(50)
  • 一文读懂大数据工具Phoenix:让你的数据管理更高效!

    介绍:Phoenix,最初由saleforce开发并开源,后成为Apache基金会的顶级项目。它是一个构建在HBase上的SQL层,可以使用标准的JDBC APIs而不是HBase客户端APIs来创建表、插入数据和查询HBase中的数据。此外,Phoenix还完全使用Java编写,作为HBase内嵌的JDBC驱动,将SQL查询转换为一个或多个

    2024年01月20日
    浏览(44)
  • HIVE 表 DLL 基本操作(一)——第1关:Create/Alter/Drop 数据库

    第1关:Create/Alter/Drop 数据库 任务描述 本关任务:根据编程要求对数据库进行相关操作。 相关知识 为了完成本关任务,你需要掌握: 1.如何创建数据库; 2.如何修改数据库; 3.如何删除数据库。 Create 创建数据库 数据库本质上是一个目录或命名空间,用于解决表命名冲突。

    2024年02月03日
    浏览(54)
  • 【项目实战】Dbeaver使用Apache Phoenix来实现连接Hbase的详细指引

    DBeaver是一款开源的数据库管理工具,可以连接多种类型的数据库,包括Apache Phoenix和Hbase。通过DBeaver连接Hbase表,可以更方便地进行数据管理和查询。 注意:该教程适用于:远程连接Linux上的Hadoop集群,因此本步骤是不需要在本地再下载hadoop的环境,所以,很多内容都可以直

    2024年02月05日
    浏览(43)
  • 【五一创作】Springboot+多环境+多数据源(MySQL+Phoenix)配置及查询(多知识点)

    实时数据展示,通常分两部分, 一部分是离线数据计算,这部分通过大数据程序计算好后,同步到MySQL中。 一部分是实时程序,这部分是Flink实时写入Phoenix表中。 这样两部分拼接好后,就是完整的实时数据部分,所以现在一个接口查询需要将MySQL和Phoenix中的表查询并合并在

    2024年02月02日
    浏览(45)
  • 【大数据Hive】hive 表数据优化使用详解

    目录 一、前言 二、hive 常用数据存储格式 2.1 文件格式-TextFile 2.1.1 操作演示

    2024年02月08日
    浏览(43)
  • 【Java核心知识】spring boot整合Mybatis plus + Phoenix 访问Hbase与使用注意

    为什么Phoenix能让开发者通过SQL访问Hbase而不必使用原生的方式?引用Phoenix官网上的一句话:SQL is just a way of expressing what you want to get not how you want to get it . 即SQL不是一种数据操作技术,而是一种特殊的表达方式。只是表示你需要什么而不是你如何获得。 一个集成了Phoenix的Hb

    2024年02月15日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包