Phoenix 基本使用

进入Phoenix

 phoenix-sqlline.py 10.248.161.18:2181:/hbase

或者进入目录下执行

cd /opt/cloudera/parcels/APACHE_PHOENIX/bin

关联Hbase原有表

  • 创建Hbase表,列簇为 cf1 , cf2
create 'phoenix_hbase_test','cf1','cf2'
  • 插入测试数据
put 'phoenix_hbase_test', 'key1','cf1:name','zhangsan'
put 'phoenix_hbase_test', 'key1','cf2:age','18'
put 'phoenix_hbase_test', 'key2','cf1:name','lisi'
put 'phoenix_hbase_test', 'key2','cf2:age','26'
put 'phoenix_hbase_test', 'key3','cf1:name','chenwu'
put 'phoenix_hbase_test', 'key4','cf2:age','10'
  • 查看

  • 创建Phoenix表关联

在Phoenix执行

create table "phoenix_hbase_test"("rowkey" varchar primary key, "cf1"."name" varchar , "cf2"."age" varchar)  column_encoded_bytes=0; 

或者创建视图(可以理解为视图是hive的外部表,table是内部表,删除内部表hbase表也会删除,删除视图hbase表还存在)

create view "phoenix_hbase_test"("rowkey" varchar primary key, "cf1"."name" varchar , "cf2"."age" varchar) ;

注意:

        这里这里在Phoenix后面有column_encoded_bytes=0;  意思是禁用对字段值进行压缩编码(4.10)后的新特性,如果不加会查询会无数据,具体可参考:

  • 查询数据
0: jdbc:phoenix:xxxx:2181:/hbase> select * from "phoenix_hbase_test";
+---------+-----------+------+
| rowkey  |   name    | age  |
+---------+-----------+------+
| key1    | zhangsan  | 18   |
| key2    | lisi      | 26   |
| key3    | chenwu    |      |
| key4    |           | 10   |
+---------+-----------+------+
4 rows selected (0.025 seconds)
  • Phoenix插入数据 并查看内容
0: jdbc:phoenix:xxx:2181:/hbase> upsert into "phoenix_hbase_test"("rowkey","cf1"."name","cf2"."age") values('key5','shazi','66');
1 row affected (0.007 seconds)
0: jdbc:phoenix:xxx:2181:/hbase> select * from "phoenix_hbase_test";
+---------+-----------+------+
| rowkey  |   name    | age  |
+---------+-----------+------+
| key1    | zhangsan  | 18   |
| key2    | lisi      | 26   |
| key3    | chenwu    |      |
| key4    |           | 10   |
| key5    | shazi     | 66   |
+---------+-----------+------+
5 rows selected (0.021 seconds)

如果是视图的场景下,是无法upsert into ,只能通过hbase put添加数据

0: jdbc:phoenix:xxx:2181:/hbase> upsert into "phoenix_hbase_test"("rowkey","cf1"."name","cf2"."age") values('key5','shazi','66');
Error: ERROR 505 (42000): Table is read only. (state=42000,code=505)
org.apache.phoenix.schema.ReadOnlyTableException: ERROR 505 (42000): Table is read only.at org.apache.phoenix.compile.UpsertCompiler.compile(UpsertCompiler.java:359)at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:784)at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:770)at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:401)at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:391)at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:389)at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:378)at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1825)at sqlline.Commands.execute(Commands.java:822)at sqlline.Commands.sql(Commands.java:732)at sqlline.SqlLine.dispatch(SqlLine.java:813)at sqlline.SqlLine.begin(SqlLine.java:686)at sqlline.SqlLine.start(SqlLine.java:398)at sqlline.SqlLine.main(SqlLine.java:291)

视图有以下几点限制

1.只有通过VIEW进行更新时,才能维护VIEW上的INDEX。通过底层TABLE或父VIEW进行的更新不会反映在索引(PHOENIX-1499)中。
2.如果主键列的主键约束以可变长度列(PHOENIX-2157)结尾,则主键列不能添加到VIEW中。
3.VIEW可以通过简单的SELECT *查询仅在单个表上定义。您不能在多个连接的表格或聚合(PHOENIX-1505,PHOENIX-1506)上创建VIEW 。
4.当一个列添加到VIEW时,新列不会自动添加到任何子视图(PHOENIX-2054)。解决方法是手动将该列添加到子视图。
5.所有列在创建时都必须投影到VIEW中(即仅支持CREATE VIEW ... AS SELECT *)。但是,请注意,在通过ALTER VIEW命令创建后,您可以在VIEW中删除从基表继承的非主键列。在未来的版本(PHOENIX-1507)中支持在SELECT子句中提供列和或表达式的子集。

Phoenix 关联hbase表历史数据相关推荐

  1. phoenix关联hbase表:通过建立视图映射或表映射的方式

    注意:创建的表或视图必须指定primary key

  2. Phoenix 关联映射 Hbase表 获取不到数据,upsert hbase 列名为16进制字符

    创建Hbase表 create 'phoenix_hbase_test','cf1','cf2' put 'phoenix_hbase_test', 'key1','cf1:name','zhangs ...

  3. [saiku] 使用 Apache Phoenix and HBase 结合 saiku 做大数据查询分析

    saiku不仅可以对传统的RDBMS里面的数据做OLAP分析,还可以对Nosql数据库如Hbase做统计分析. 本文简单介绍下一个使用saiku去查询分析hbase数据的例子. 1.phoenix和h ...

  4. Phoenix查询hbase

    https://www.cnblogs.com/linbingdong/p/5832112.html  这个很全看这个HBase,一个NoSQL数据库,可存储大量非关系型数据. HBase,可以用HB ...

  5. Phoenix 原理 以及 Phoenix在HBase中的应用

    一.前言 业务使用HBase已经有一段时间了,期间也反馈了很多问题,其中反馈最多的是HBase是否支持SQL查询和二级索引,由于HBase在这两块上目前暂不支持,导致业务在使用时无法更好的利用现有的经 ...

  6. springboot集成phoenix,操作hbase

    文章目录 前言 1.版本要求 1.1 对hbase版本的支持 2.微服务集成 2.1 创建gradle项目,添加依赖 2.2 application.yml配置 2.3 准备调试环境 2.3.1 服务 ...

  7. 实时即未来,车联网项目之phoenix on hbase 即席查询【四】

    文章目录 Phoenix的介绍和客户端命令 构建HBase的二级索引 原始数据itcast_src构建二级索引 phoenix 使用场景 车辆常用字段明细数据 ETL 车辆明细数据统计 车辆总数统计 ...

  8. Hive 与 Hbase表映射(内部表与外部表),Hbase常用命令

    应用场景 1.将ETL操作的数据存入HBase 2.Hbase作为Hive的数据源 构建低延迟的数据仓库 Hive表映射至Hbase Hbase上有表 -> 外部表 创建Hive表映射HBase ...

  9. Phoenix创建盐表

    1.Phoenix创建盐表 官网地址:http://phoenix.apache.org/salted.html 创建一个盐表: CREATE TABLE test.test_salt (id VAR ...

最新文章

  1. Linux服务器常见问题
  2. 干货︱机器学习中防止过拟合的处理方法
  3. AtCoder AGC034D Manhattan Max Matching (费用流)
  4. LG P4198 楼房重建(线段树)
  5. python send 案例_python使用rabbitmq实例三,交换机
  6. 今天用充QQ币的时候,发现选择网银的时候,竟然会跳出一个错误
  7. 如何在程序中打开PDF文件 -C#文章(.net)
  8. dedecms织梦(一)
  9. sobel,canny(可滑动调节阈值)边缘检测算法opencv-python实战
  10. 如何运行项目或工程中的单独java文件---找不到或无法加载主类”错误的原因
  11. Android-蓝牙AVRCP 以及 绝对音量(absolute volume)概述-A2dp-hfp
  12. 怎样把mp4视频转换成mov格式电影
  13. 网络渗透测试实验二(网络扫描与网络侦察)
  14. 谈谈WebService开发-基础篇
  15. 程序员写了个自动回复机器人和女友聊天,女友发现后....
  16. 递归:昆虫繁殖C++实现
  17. Linux打印添加水印,Linux 下给图片批量加水印
  18. Dijkstra算法 详细讲解
  19. opencv把图片读为matlab,OpenCv和matlab对图像的读取
  20. 代码批量重命名图片:去掉图片名字的末尾几个字符

热门文章

  1. python中issubset是什么_python3解释器执行 {2, 3, 4}.issubset({2, 3, 4})的结果为__。
  2. vue前后分离session实现_vue2 前后端分离项目ajax跨域session问题解决
  3. html鼠标悬停效果_【开发小技巧】023—如何使用HTML和CSS实现3D文字效果
  4. html中什么是语义,html – “语义正确”是什么意思?
  5. mysql 触发器 运算符_mysql三元运算,上下连表,视图,触发器,存储过程,事务等不常用方法...
  6. subscribe error不执行_你不知道的redis:第三方jar无封装命令我们该怎么执行?
  7. mysql 5.6.27安装图解_Linux下MySQL 5.6.27 安装教程
  8. mysql超过1W条查询不显示_mysql 被写入1W数据后无法select*from table,但是加入limit参数后可以查询...
  9. php object keys_原生js中Object.keys方法详解
  10. git两个账号切换_多个git账号之间的切换