2017-02-22 75 views
0

我正嘗試通過Hive接收器將JSON數據加載到Hive。 但它失敗,出現以下錯誤:Flume Hive接收器無法序列化JSON與陣列

WARN org.apache.hive.hcatalog.data.JsonSerDe: Error [java.io.IOException: Field name expected] parsing json text [{"id": "12345", "url": "https://mysite", "title": ["MyTytle"]}]. 
INFO org.apache.flume.sink.hive.HiveWriter: Parse failed : Unable to convert byte[] record into Object : {"id": "12345", "url": "https://mysite", "title": ["MyTytle"]} 

數據示例:

{"id": "12345", "url": "https://mysite", "title": ["MyTytle"]} 

蜂巢表的說明:

id    string          
url    string          
title   array<string>        
time   string          

# Partitions 
time   string 

如果JSON數據沒有按正常工作以同樣的方式不包含數組(也包含Hive表)。

水槽版本:1.7.0(Cloudera的CDH 5.10)

是否能夠經由水槽蜂房與陣列加載JSON數據宿?

回答

0

是否可以通過Flume Hive接收器加載數組的JSON數據?

我認爲這是可能的,儘管我從來沒有嘗試過自己。來源:

https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.3.0/bk_HDP_RelNotes/content/ch01s08s02.html

Following serializers are provided for Hive sink:

JSON: Handles UTF8 encoded Json (strict syntax) events and requires no configuration. Object names in the JSON are mapped directly to columns with the same name in the Hive table. Internally uses org.apache.hive.hcatalog.data.JsonSerDe but is independent of the Serde of the Hive table. This serializer requires HCatalog to be installed.

因此,也許你正在實施一些錯誤的SERDE。這解決了用戶通過執行以前的正則表達式連載使用數組一個JSON的問題:

Parse json arrays using HIVE

,你可以嘗試的另一件事是改變SERDE。至少你有這兩個選項(也許還有一些更多):