尚硅谷大数据技术之PhoenixWord下载.docx
- 文档编号:20508182
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:18
- 大小:1.15MB
尚硅谷大数据技术之PhoenixWord下载.docx
《尚硅谷大数据技术之PhoenixWord下载.docx》由会员分享,可在线阅读,更多相关《尚硅谷大数据技术之PhoenixWord下载.docx(18页珍藏版)》请在冰豆网上搜索。
[atguigu@hadoop101module]$cd/opt/module/phoenix/
向每个节点发送serverjar
[atguigu@hadoop101phoenix]$cpphoenix-4.14.2-HBase-1.3-server.jar/opt/module/hbase/lib/
[atguigu@hadoop101phoenix]$scpphoenix-4.14.2-HBase-1.3-server.jarhadoop102:
/opt/module/hbase/lib/
[atguigu@hadoop101phoenix]$scpphoenix-4.14.2-HBase-1.3-server.jarhadoop103:
向每个节点发送clientjar
[atguigu@hadoop101phoenix]$cpphoenix-4.14.2-HBase-1.3-client.jar/opt/module/hbase/lib/
[atguigu@hadoop101phoenix]$scpphoenix-4.14.2-HBase-1.3-client.jarhadoop102:
[atguigu@hadoop101phoenix]$scpphoenix-4.14.2-HBase-1.3-client.jarhadoop103:
2.1.4在root权限下给/etc/profile下添加如下内容
#phoenix
exportPHOENIX_HOME=/opt/module/phoenix
exportPHOENIX_CLASSPATH=$PHOENIX_HOME
exportPATH=$PATH:
$PHOENIX_HOME/bin
2.1.5启动Zookeeper,Hadoop,Hbase
2.1.6启动Phoenix
[atguigu@hadoop101phoenix]$/opt/module/phoenix/bin/sqlline.pyhadoop101,hadoop102,hadoop103:
2181
2.2phoenix表操作
2.2.1显示所有表
!
table或!
tables
2.2.2创建表
CREATETABLEIFNOTEXISTSus_population(
StateCHAR
(2)NOTNULL,
CityVARCHARNOTNULL,
PopulationBIGINT
CONSTRAINTmy_pkPRIMARYKEY(state,city));
如下显示:
在phoenix中,默认情况下,表名等会自动转换为大写,若要小写,使用双引号,如"
us_population"
。
2.2.3插入记录
upsertintous_populationvalues('
NY'
'
NewYork'
8143197);
2.2.4查询记录
select*fromus_population;
select*fromus_populationwherestate='
;
2.2.5删除记录
deletefromus_populationwherestate='
2.2.6删除表
droptableus_population;
2.2.7退出命令行
!
quit
2.3phoenix表映射
2.3.1Phoenix和Hbase表的关系
默认情况下,直接在hbase中创建的表,通过phoenix是查看不到的。
如图1和图2,US_POPULATION是在phoenix中直接创建的,而kylin相关表是在hbase中直接创建的,在phoenix中是查看不到kylin等表的。
图1phoenix命令行中查看所有表:
图2hbase命令行中查看所有表:
如果要在phoenix中操作直接在hbase中创建的表,则需要在phoenix中进行表的映射。
映射方式有两种:
视图映射和表映射
2.3.2Hbase命令行中创建表test
Hbase中test的表结构如下,两个列簇name、company.
Rowkey
name
company
empid
firstname
lastname
address
启动Hbaseshell
[atguigu@hadoop101~]$/opt/module/hbase-1.3.1/bin/hbaseshell
创建Hbase表test
hbase(main):
001:
0>
create'
test'
name'
company'
创建表,如下图:
2.3.3视图映射
Phoenix创建的视图是只读的,所以只能用来做查询,无法通过视图对源数据进行修改等操作。
在phoenix中创建视图test表
0:
jdbc:
phoenix:
hadoop101,hadoop102,hadoop103>
createview"
test"
(empidvarcharprimarykey,"
name"
."
firstname"
varchar,"
lastname"
company"
address"
varchar);
删除视图
dropview"
2.3.3表映射
使用ApachePhoenix创建对HBase的表映射,有两种方法:
1)当HBase中已经存在表时,可以以类似创建视图的方式创建关联表,只需要将createview改为createtable即可。
hadoop102,hadoop103,hadoop104>
createtable"
test1"
2)当HBase中不存在表时,可以直接使用createtable指令创建需要的表,系统将会自动在Phoenix和HBase中创建person_infomation的表,并会根据指令内的参数对表结构进行初始化。
varchar)column_encoded_bytes=0;
2.3.4使用spark对phoenix的读写
在Phoenix中查看数据
select*fromSTOCK_SYMBOL
在Hbase中查看数据
scan"
STOCK_SYMBOL"
更多使用详情,请参考http:
//phoenix.apache.org/phoenix_spark.html
2.3.5视图映射和表映射的对比与总结:
相比于直接创建映射表,视图的查询效率会低,原因是:
创建映射表的时候,Phoenix会在表中创建一些空的键值对,这些空键值对的存在可以用来提高查询效率。
使用createtable创建的关联表,如果对表进行了修改,源数据也会改变,同时如果关联表被删除,源表也会被删除。
但是视图就不会,如果删除视图,源数据不会发生改变。
第3章Phoenix创建Hbase二级索引
3.1配置Hbase支持Phoenix创建二级索引
3.1.1添加如下配置到Hbase的Hregionserver节点的hbase-site.xml
<
--phoenixregionserver配置参数-->
property>
name>
hbase.regionserver.wal.codec<
/name>
value>
org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec<
/value>
/property>
hbase.region.server.rpc.scheduler.factory.class<
org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory<
description>
FactorytocreatethePhoenixRPCSchedulerthatusesseparatequeuesforindexandmetadataupdates<
/description>
hbase.rpc.controllerfactory.class<
org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory<
3.1.2添加如下配置到Hbase中Hmaster节点的hbase-site.xml中
--phoenixmaster配置参数-->
hbase.master.loadbalancer.class<
org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer<
hbase.coprocessor.master.classes<
org.apache.phoenix.hbase.index.master.IndexMasterObserver<
3.1.3验证效果:
3.2创建索引
3.2.1phoenix的索引分类
1)globalindex是默认的索引格式。
适用于多读少写的业务场景。
写数据的时候会消耗大量开销,因为索引表也要更新,而索引表是分布在不同的数据节点上的,跨节点的数据传输带来了较大的性能消耗。
在读数据的时候Phoenix会选择索引表来降低查询消耗的时间。
如果想查询的字段不是索引字段的话索引表不会被使用,也就是说不会带来查询速度的提升。
CREATEINDEXmy_indexONmy_table(my_col)
2)Localindex适用于写操作频繁的场景。
索引数据和数据表的数据是存放在相同的服务器中的,避免了在写操作的时候往不同服务器的索引表中写索引带来的额外开销。
查询的字段不是索引字段索引表也会被使用,这会带来查询速度的提升。
CREATELOCALINDEXmy_indexONmy_table(my_index)
建立localindex可能出现的问题
hbase-site.xml的zookeeeper的配置信息不能加2181,否则在创建localindex的时候会报以下异常:
正常配置:
<
hbase.zookeeper.quorum<
hadoop101,hadoop102,hadoop103<
Localindex和Globalindex区别:
Localindex由于是数据与索引在同一服务器上,所以要查询的数据在哪台服务器的哪个region是无法定位的,只能先找到region然后在利用索引。
Globalindex是一种分布式索引,可以直接利用索引定位服务器和region,速度更快,但是由于分布式的原因,数据一旦出现新增变化,分布式的索引要进行跨服务的同步操作,带来大量的通信消耗。
所以在写操作频繁的字段上不适合建立Globalindex。
3.2.2三种提升效率查询方式
1)CREATEINDEXmy_indexONmy_table(v1)INCLUDE(v2)
2)SELECT/*+INDEX(my_tablemy_index)*/v2FROMmy_tableWHEREv1='
foo'
3)CREATELOCALINDEXmy_indexONmy_table(v1)
3.2.3如何删除索引
DROPINDEXmy_indexONmy_table
第4章Squirrel可视化连接Phoenix
4.1下载Squirrel的jar包官方网址
http:
//squirrel-
4.2在Windows环境下安装Squirrel程序
1)选择Java方式打开安装
2)自定义安装目录
3)一直Next到安装完成
4.3配置Squirrel连接到Phoenix
1)复制Phoenix的client.jar包到D:
\work\squirrel\lib的lib下
2)启动Squirrel
3)配置Driver
4)添加Driver具体配置信息
配置信息:
Name=Phoenix
ExampleURL=jdbc:
hadoop101,hadoop102,hadoop103:
JavaClassPath选择D:
\work\squirrel\lib\phoenix-4.14.2-HBase-1.3-client.jar
ClassName=org.apache.phoenix.jdbc.PhoenixDriver
5)配置Aliases
6)添加Aliases具体配置信息
Name=任意
Driver选择刚才添加的Phoenix
URL=jdbc:
phoenix:
UserName=任意
Password=任意
7)测试连接是否成功
双击连接Phoenix
8)使用Squirrel查询数据
查询sql(WEB_STAT表要提前建好并导入数据)
[atguigu@hadoop101bin]$psql.py../examples/STOCK_SYMBOL.sql
[atguigu@hadoop101bin]$psql.py../examples/STOCK_SYMBOL.csv
select*fromWEB_STAT;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硅谷 数据 技术 Phoenix