昨晚羣內網友創建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)