问题描述
我正在尝试从 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>
。