Athena 从 JSON 创建表,如何处理多个嵌套结构

问题描述

我正在尝试从 json 创建一个表,json 就像

{"ocNo" : "6090","clientSessionKey" : {"office" : {"ortsCode" : 6090},"workstationNo" : 1}}

我试图通过执行以下查询来实现它:

CREATE EXTERNAL TABLE events_tryout(
  ocNo string,clientSessionKey struct<office struct<ortsCode: int>,workstationNo int> 
  ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://lab.ea38-zplus.cap.nonprod.int2/test/'

但是我收到以下错误消息: Failed: ParseException line 1:81 missing : at 'struct' near '<EOF>' line 1:118 missing : at 'int' near '<EOF>' 我检查了 json 是否有效,所以这不是问题。 但是,当我通过删除 ClientSessionKey 运行它并且此嵌套起作用时,这告诉我,问题在于添加一个嵌套。 Athena 可以在从 json 创建表时处理结构内的结构,还是应该采取其他方法

解决方法

问题是在 : 之后缺少一个 office,就像错误消息所说的那样。

: 之后还缺少另一个 workstationNo

试试struct<office:struct<ortsCode:int>,workstationNo: int>