最近業務部門反應數據上報上來數據中有字段缺失。有個字段daily_amount在MQ里面是有值的,但是導入到impala后查到的確為NULL。先交代一下背景。數據平臺的數據流水線如下:
數據流水線
數據上報后首先寫入到MQ里,通過一個消費者將數據存入HBase中,每天通過Impala JDBC接口增量將數據以Parquet格式寫入HDFS中。
1.首先想到數據有沒有寫到HBase中,通過HBase Shell查看了一下數據是有的
HBase中的數據
2.然后想會不會是創建外部表時,HBase中的列名稱和Impala表的字段沒有對上?因為整個過程都是程序執行的,雖然這種可能性不大,但還是檢查了一下,將HBase列映射和Impala的字段依次列到文本文件中看相應的字段是否在同一行,順便看看有沒有拼寫錯誤。
3.沒有頭緒,抱著試一試的心態在Hive中查了一下同一條數據的同一個字段,發現數據竟然是有的。初步判斷是Impala對HBase外部表的一個兼容性問題。
Hive中的數據
總結:impala盡量只用作OLAP,在離線任務里面盡可能使用Hive。