最近业务部门反应数据上报上来数据中有字段缺失。有个字段daily_amount在MQ里面是有值的,但是导入到impala后查到的确为NULL。先交代一下背景。数据平台的数据流水线如下:
数据上报后首先写入到MQ里,通过一个消费者将数据存入HBase中,每天通过Impala JDBC接口增量将数据以Parquet格式写入HDFS中。
1.首先想到数据有没有写到HBase中,通过HBase Shell查看了一下数据是有的
2.然后想会不会是创建外部表时,HBase中的列名称和Impala表的字段没有对上?因为整个过程都是程序执行的,虽然这种可能性不大,但还是检查了一下,将HBase列映射和Impala的字段依次列到文本文件中看相应的字段是否在同一行,顺便看看有没有拼写错误。
3.没有头绪,抱着试一试的心态在Hive中查了一下同一条数据的同一个字段,发现数据竟然是有的。初步判断是Impala对HBase外部表的一个兼容性问题。
总结:impala尽量只用作OLAP,在离线任务里面尽可能使用Hive。