hbase 查询_0762-5.16.2-Impala查询HBase表字段顺序不正确异常分析

​异常说明

按照官方文档在Hive中建表关联HBase,然后在Hue中用Impala查询,查询结果中字段的顺序与在Hive中的建表顺序不一致,Hue中使用Impala查询出来的字段顺序是按照字母排序的。

问题重现和说明

在Hive中建表关联HBase

CREATE EXTERNAL TABLE `hbasestringids`(            ||   `id` string COMMENT 'from deserializer',         ||   `bool_col` boolean COMMENT 'from deserializer',  ||   `tinyint_col` tinyint COMMENT 'from deserializer',  ||   `smallint_col` smallint COMMENT 'from deserializer',  ||   `int_col` int COMMENT 'from deserializer',       ||   `bigint_col` bigint COMMENT 'from deserializer',  ||   `float_col` float COMMENT 'from deserializer',   ||   `double_col` double COMMENT 'from deserializer',  ||   `date_string_col` string COMMENT 'from deserializer',  ||   `string_col` string COMMENT 'from deserializer',  ||   `timestamp_col` timestamp COMMENT 'from deserializer') || ROW FORMAT SERDE                                   ||   'org.apache.hadoop.hive.hbase.HBaseSerDe'        || STORED BY                                          ||   'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  || WITH SERDEPROPERTIES (                             ||   'hbase.columns.mapping'=':key,boolsCF:bool_col,intsCF:tinyint_col,intsCF:smallint_col,intsCF:int_col,intsCF:bigint_col,floatsCF:float_col,floatsCF:double_col,stringsCF:date_string_col,stringsCF:string_col,stringsCF:timestamp_col',  ||   'serialization.format'='1')                      || TBLPROPERTIES (                                    ||   'hbase.table.name'='hbasealltypessmall',         ||   'transient_lastDdlTime'='1585032011')

Hive中的建表顺序如下

cfd4ee870c84438fd2700e2711c31422.png

在Impala-shell中查询出的表字段顺序如下,与Hive建表顺序不一致

f0c9a890d810243bc378cac7b726e9e0.png

在Hue中用询出来的表字段顺序如下,与在Impala-shell中的查询结果一直,但是与Hive中的建表顺序不一致。

82b2cb06da87a6056e2120e8cc32313e.png

经确认,此问题是Impala中的一个bug,目前正在修复中。目前有一个Jira在跟踪这个问题,链接如下,如果要保持字段顺序可以在select后按照自己想要的顺序自己编写。

https://issues.apache.org/jira/browse/IMPALA-886

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值