2017-02-22 32 views
0

Я пытаюсь загрузить данные JSON в Hive через Hive Sink. Но он не со следующей ошибкой:Flive Hive sink не удалось сериализовать 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 Безразлично 't содержать массивы (и таблицу Hive).

Flume версия: 1.7.0 (Cloudera CDH 5,10)

ли возможность загружать данные в формате JSON с массивами через Flume Улей тонуть?

ответ

0

Можно ли загрузить данные JSON с помощью массивов через раковину для умывальника Flume?

Я предполагаю, что это возможно, несмотря на то, что я никогда не пробовал себя. От:

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. Пользователь решил проблему serialising в JSON с массивами, выполняя предыдущее регулярное выражение:

Parse json arrays using HIVE

Другая вещь, которую вы можете попробовать это изменить SerDe. По крайней мере, у вас есть эти два варианта (может быть, есть еще несколько):