天天看點

impala精度修改問題背景分析&試驗解決

背景

因上遊資料精度發生變化,需相應調整大資料的精度,直接進行調整後,HIVE沒有問題,但impala無法正常查詢修改後的表,報錯為

column 'XXX' has an invalid type length

分析&試驗

最開始以為是HIVE中繼資料的問題,因為是分區表懷疑曆史分區相關資訊沒有變更,然後去HIVE中繼資料庫查,結果中繼資料資訊是一樣的。

然後網上去查資料,度娘真的啥也不知道啊,還是得上apache,Stack Overflow上搜尋,但是搜了半天也沒找到太多有用的東西,目前有用的資訊為,impala修改字段類型跟底層存儲格式相關,底層為parquet格式的影響較大,很多類型變更不支援。

關鍵在于impala發現中繼資料裡的資訊跟parquet檔案記錄的資訊不一緻,然後報錯,這個可能需要等官方修複吧,哈哈。

在這期間還嘗試了,建立表,然後複制hdfs上的檔案過去,用分區修複的方式複制資料,但是因為本質上parquet檔案沒有改變,是以還是失敗了。

解決

目前的解決方案隻能是重新寫入資料。

即先重命名舊表,建立新表,然後把舊表資料導入,删除舊表。

繼續閱讀