cdh6.3.2上Hive on Spark模式下hive無法使用JsonSerDe問題

昨晚羣內網友創建hive外部表(圖一)後查詢(Hive on Spark模式)便報錯(圖二):

而我在cdh6.3.2上初次嘗試建JsonSerDe外部表(參考:hive中創建hive-json格式的表及查詢)時報錯(圖三):

ERROR hive.log: error in initSerDe: java.lang.ClassNotFoundException Class org.apache.hive.hcatalog.data.JsonSerDe not found

我的解決方案:

1)查找此cdh6.3.2上Hive組件(僅需配置HiveServer2角色所在機器cdh632-worker03)自帶的hive-hcatalog-core.jar(圖四)

2)cp此jar到第3步驟所指目錄(圖四)

3)按照community cloudera設置HIVE_AUX_JARS_PATH(圖五),說明:由於我使用了atlas(見我往期csdn博客),但又不知如何將HIVE_AUX_JARS_PATH配置成多目錄,故第2步驟中採取了cp方式(若網友有更好推薦,請評論)

於是便成功查詢hive見圖六(Hive on Spark模式,關於cdh6.3.2上具體配置見我往期csdn博客)

而羣內網友採用我方案後依然報錯如圖七

可能他需要參考:

(1)永久生效:Hive中帶條件查詢時報Class org.apache.hive.hcatalog.data.JsonSerDe not found的錯誤及解決辦法

(2)臨時生效(add jar方式):hive存儲json格式文件,經查閱此文“參考資料”發現apache hive官方確實推薦此方式(圖八)

(3)community.cloudera官方所提hive -hiveconf hive.aux.jars.path=...方式理論上等同於方式(2),而我的卻依然無效。

最後經查:Hive 利用 JsonSerde 處理 JSON 格式數據,在hive建表語句中使用hive自帶jar包org.apache.hive.hcatalog.data.JsonSerDe是不支持忽略格式錯誤數據的,至於我cdh6.3.2環境下可下載此文文首第一個github網址中1.3.8版本(作者已斷更:https://github.com/rcongiu/Hive-JSON-Serde/issues/223

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章