Hadoop Flume配置单元接收器无法使用数组序列化JSON

Hadoop Flume配置单元接收器无法使用数组序列化JSON,hadoop,hive,flume,flume-ng,Hadoop,Hive,Flume,Flume Ng,我正在尝试通过配置单元接收器将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.

我正在尝试通过配置单元接收器将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
id字符串
url字符串
标题数组
时间串
#分割
时间串
同样,如果JSON数据不包含数组(以及配置单元表),它也可以正常工作

水槽版本:1.7.0(Cloudera CDH 5.10)

是否可以通过Flume配置单元接收器将JSON数据加载到阵列中

是否可以通过Flume配置单元接收器用数组加载JSON数据

我认为这是可能的,尽管我从未尝试过自己。发件人:

为配置单元接收器提供了以下序列化程序:

JSON:处理UTF8编码的JSON(严格语法)事件,不需要 配置JSON中的对象名直接映射到列 在配置单元表中使用相同的名称。内部使用 org.apache.hive.hcatalog.data.JsonSerDe,但独立于 蜂箱桌的塞德。此序列化程序要求使用HCatalog 安装

因此,也许您在SerDe中实现了一些错误。此用户通过执行以前的regexp解决了使用数组序列化JSON的问题:

你可以尝试的另一件事是改变顺序。至少你有两个选择(也许还有更多):

  • 'org.apache.hive.hcatalog.data.JsonSerDe'
  • 'org.openx.data.jsonserde.jsonserde' ()