AWS Redshift spectrum ERROR: syntax error at or near "json"

AWS Redshift spectrum ERROR: syntax error at or near "json"

我想使用红移光谱创建一个外部table,文件是stored in s3 as json file having a single object with values as an array of objects

我对外部的查询table

CREATE EXTERNAL TABLE jatinspectrum.extable (
enteries array<struct<title:varchar(4000),link:varchar(4000),author:varchar(4000),published_date:timestamp,category:array<varchar(4000)>>>
)
stored as json
LOCATION 's3://xxxxxxxxxxxxxx/xxxxxxxxxxxxxx/xxxxxxxxxxx/';

它抛出一个错误ERROR: syntax error at or near "json" Position: 198

为了确保语法正确,我使用另一个查询将其保存为文本文件

CREATE EXTERNAL TABLE jatinspectrum.extab (
enteries array<struct<title:varchar(4000),link:varchar(4000),author:varchar(4000),published_date:timestamp,category:array<varchar(4000)>>>
)
stored as textfile
LOCATION 's3://xxxxxxxxxxxxxx/xxxxxxxxxxxxxx/xxxxxxxxxxx/';

效果很好,但这对我没有帮助,因为文本查询不支持嵌套数据。

这对我有用,需要将此 stored as textfile 更改为此

ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
stored as textfile

https://docs.aws.amazon.com/athena/latest/ug/parsing-JSON.html