- 场景描述
- 业务的部分数据来源于hive,部分数据来源于hbase。两边数据通过一些条件字段关联,可是始终有部分数据关联不上。
- hive数据源的数据直接通过hive api进行读写,hbase数据源通过phoenix读写。而且写入hbase的数据最终来源于hive,没道理会关联不上。
之后查找了好久,终于发现问题所在。就在phoenix对空串("")的处理,或者说没做写入处理。
通过下面案例说明:
- 测试(phoenix-5.0.0-hbase-2.0.0)
-
建表:
create table "test"( rk varchar primary key, "cf1"."c1" varchar, "cf1"."c2" varchar, "cf1"."c3" unsigned_int, "cf1"."c4" unsigned_long, "cf1"."c5" unsigned_double ); -
测试数据
upsert into "test" (rk,"cf1"."c1","cf1"."c3","cf1"."c4","cf1"."c5") values ('rk1','varchar',100,111,1.123); upsert into "test" (rk,"cf1"."c1") values ('rk2','');
-
查询结果

-
总结
- phoenix 没有对空串("")进行处理,所以结果仍为null。
- phoenix 对varchar 类型的null显示为空白,对数值类型的null显示为null。
1844



被折叠的 条评论
为什么被折叠?



