HBase与Phoenix表映射
2023-09-11 14:14:33 时间
环境介绍
各组件已经安装完成状态下进行此操作。
先在HBase中建表,后在Phoenix建立同名表,分别使用HBase和Phoenix向表中插入数据,并查看是否正常。
HBase建表
-- HBase建表 create 'TEST','INFO' -- 插入数据 put 'TEST', 'ROW001','INFO:NUM','1000' put 'TEST', 'ROW002','INFO:NUM','10000.000000' -- 查看数据 scan 'TEST'
注意:表名、字段均为大写。
Phoenix建表
-- Phoenix建表 create table TEST( "ROW" varchar primary key, "INFO"."NUM" DECIMAL ); -- 插入数据 UPSERT INTO TEST("ROW","INFO"."NUM") VALUES ('123', 200000000); -- 查看数据 select * from TEST;
注意:表名、字段均为大写。
测试查询
HBase可以查询到Phoenix插入的数据,但是由于Phoenix建表的时候 INFO:NUM 字段采用的 DECIMAL 类型,Phoenix端插入的数据在HBase查询到是乱码。
hbase:005:0> scan 'TEST' ROW COLUMN+CELL 123 column=INFO:NUM, timestamp=2022-06-07T14:11:35.713, value=\xC5\x03 123 column=INFO:_0, timestamp=2022-06-07T14:11:35.713, value=x ROW001 column=INFO:NUM, timestamp=2022-06-07T14:06:11.539, value=1000 ROW001 column=INFO:_0, timestamp=2022-06-07T14:06:11.539, value= ROW002 column=INFO:NUM, timestamp=2022-06-07T14:06:13.490, value=10000.000000 ROW002 column=INFO:_0, timestamp=2022-06-07T14:06:13.490, value= 3 row(s) Took 0.0168 seconds hbase:006:0>
Phoenix可以查询到HBase插入的数据,但是但是由于Phoenix建表的时候 INFO:NUM 字段采用的 DECIMAL 类型,HBase端插入的数据在Phoenix端查询是科学计数法,并且数据精度异常。
0: jdbc:phoenix:> select * from TEST; +--------+------------------------------+ | ROW | NUM | +--------+------------------------------+ | 123 | 2E+8 | | ROW001 | -5.35353E+27 | | ROW002 | -5.353535355535353535353E+27 | +--------+------------------------------+ 3 rows selected (0.022 seconds)
最终结论
Phoenix对除Varchar类型外的其它类型支持都有点问题,DECIMAL 类型存储数据会出现科学计数法的现象。如果想让HBase和Phoenix的数据完全相同,可以将Phoenix的数据类型都改成Varchar类型,这样插入的数据就不会发生变化。
相关文章
- HBase 安装设置
- HBase(2) Java 操作 HBase 教程
- Hbase Region in Transition解决方法
- 大数据应用之Windows平台Hbase客户端Eclipse开发环境搭建
- HBase读写路径的工作机制
- 元注解:@Retention 在hbase中用于获取确定高优先级的RPC操作
- 【大数据-文摘笔记】MongoDB、Cassandra 和 HBase 三种 NoSQL 数据库比较
- 大叔问题定位分享(16)spark写数据到hive外部表报错ClassCastException: org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat cannot be cast to org.apache.hadoop.hive.ql.io.HiveOutputFormat
- hbase 学习(十四)Facebook针对hbase的优化方案分析
- Sparkstreaming读取Kafka消息再结合SparkSQL,将结果保存到HBase
- 启动HBase抛出org.apache.hadoop.hbase.ClockOutOfSyncException异常:hmaster正常,节点hregionserver启动失败
- BigData之Hbase:Hbase(基于列的/分布式存储的/开源的非关系型数据库)的简介、下载、案例应用之详细攻略
- 技术实操丨HBase 2.X版本的元数据修复及一种数据迁移方式
- 【甘道夫】HBase连接池 -- HTablePool是Deprecated之后
- Hbase常见异常hbase:meta,,1.1588230740 is NOT online; state={1588230740 state=OPEN, ts=162
- HBase文章汇总