将多个JSON记录从一个文件加载到配置单元

将多个JSON记录从一个文件加载到配置单元,json,hive,shark-sql,Json,Hive,Shark Sql,我正在尝试使用JSON Serde将JSON文件加载到配置单元中。我可以让它一次为一个JSON文件工作,但我想知道是否有可能一次在一个JSON文件中有多个记录并一次加载它们。我的JSON文件如下所示: 文件1 {"styles": {"style": "Deep House"}, "genres": {"genre": "Electronic"}} 文件2 {"styles": {"style": "Rock"}, "genres": {"genre": "Techno Rock"}} 我将

我正在尝试使用JSON Serde将JSON文件加载到配置单元中。我可以让它一次为一个JSON文件工作,但我想知道是否有可能一次在一个JSON文件中有多个记录并一次加载它们。我的JSON文件如下所示:

文件1

{"styles": {"style": "Deep House"}, "genres": {"genre": "Electronic"}}
文件2

{"styles": {"style": "Rock"}, "genres": {"genre": "Techno Rock"}}
我将它们组合成一个JSON文件,如下所示:

{"styles": {"style": "Deep House"}, "genres": {"genre": "Electronic"}},{"styles": {"style": "Rock"}, "genres": {"genre": "Techno Rock"}}
加载此文件时,仅加载第一条记录。我的表DDL如下所示:

create table json_data (
styles struct<style: string>,
genres struct<genre: string>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe';
当我查询表时,只插入了一条记录

select * from json_data;
    {"style":"Deep House"}  {"genre":"Electronic"}
    Time taken: 0.76 seconds
我在这里创建JSON文件时是否做错了什么?或者在一个JSON文件中不可能有两条记录?任何帮助都将不胜感激


谢谢,TM

您可以将多个Json记录加载到配置单元表中,但只需将每个Json记录用新行字符分隔即可

json_数据文件的内容:

{"styles": {"style": "Deep House"}, "genres": {"genre": "Electronic"}}
{"styles": {"style": "Rock"}, "genres": {"genre": "Techno Rock"}}

select * from json_data;
OK
{"style":"Deep House"}  {"genre":"Electronic"}
{"style":"Rock"}        {"genre":"Techno Rock"}
原因是Json Serde的实现希望它采用这种语法。在下面找到Jsonserde github链接

{"styles": {"style": "Deep House"}, "genres": {"genre": "Electronic"}}
{"styles": {"style": "Rock"}, "genres": {"genre": "Techno Rock"}}

select * from json_data;
OK
{"style":"Deep House"}  {"genre":"Electronic"}
{"style":"Rock"}        {"genre":"Techno Rock"}