Impala读取HBase外部表的一个坑

最近业务部门反应数据上报上来数据中有字段缺失。有个字段daily_amount在MQ里面是有值的,但是导入到impala后查到的确为NULL。先交代一下背景。数据平台的数据流水线如下:


Impala读取HBase外部表的一个坑_第1张图片
数据流水线

数据上报后首先写入到MQ里,通过一个消费者将数据存入HBase中,每天通过Impala JDBC接口增量将数据以Parquet格式写入HDFS中。

1.首先想到数据有没有写到HBase中,通过HBase Shell查看了一下数据是有的


HBase中的数据

2.然后想会不会是创建外部表时,HBase中的列名称和Impala表的字段没有对上?因为整个过程都是程序执行的,虽然这种可能性不大,但还是检查了一下,将HBase列映射和Impala的字段依次列到文本文件中看相应的字段是否在同一行,顺便看看有没有拼写错误。


3.没有头绪,抱着试一试的心态在Hive中查了一下同一条数据的同一个字段,发现数据竟然是有的。初步判断是Impala对HBase外部表的一个兼容性问题。


Impala读取HBase外部表的一个坑_第2张图片
Hive中的数据

总结:impala尽量只用作OLAP,在离线任务里面尽可能使用Hive。

你可能感兴趣的:(Impala读取HBase外部表的一个坑)