2017-02-22 3 views
0

Ich versuche, JSON-Daten über Hive Sink in Hive zu laden. Aber es schlägt mit dem folgenden Fehler:Flume Hive-Senke konnte JSON mit Array nicht serialisieren

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"]} 

Beispiel Daten:

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

Beschreibung von Hive Tabelle:

id    string          
url    string          
title   array<string>        
time   string          

# Partitions 
time   string 

Und die gleiche Art und Weise funktioniert es in Ordnung, wenn JSON-Daten doesn Sie enthalten keine Arrays (und auch keine Hive-Tabelle).

Flume Version: 1.7.0 (Cloudera CDH 5.10)

Ist es möglich, JSON-Daten mit Arrays über Flume Hive sinken zu laden?

Antwort

0

Ist es möglich, JSON-Daten mit Arrays über Flume Hive Sink zu laden?

Ich gehe davon aus, dass es möglich ist, obwohl ich mich selbst nie versucht habe. Von:

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.

Vielleicht setzen Sie etwas falsch in der SerDe. Dieser Benutzer löste das Problem der ein JSON-Arrays Serialisierung von einer früheren regexp Durchführung:

Parse json arrays using HIVE

Eine andere Sache, die Sie versuchen können, ist die SerDe zu ändern. Mindestens Sie haben diese beiden Optionen (vielleicht gibt es einige mehr):

Verwandte Themen