查询结构列时面临拒绝访问

我可以使用 Redshift 频谱查询我的表。但是,当我尝试访问定义为结构的列时,出现以下错误:

ERROR: Spectrum Scan Error: S3ServiceException:access Denied,Status 403,Error accessDenied

知道为什么会这样吗?

yxj7078 回答:查询结构列时面临拒绝访问

我想我也正在遭受这种痛苦。如果你去会发生什么

set json_serialization_enable to true;

然后选择结构体字段?

尝试一下

select json_extract_path_text(structfield,'key') from external_schema.table;

我觉得 S3 访问错误是假的,而是 Glue 表定义存在一个不太正确的问题。

,

就像您提到的那样,您正在使用亚马逊红移光谱。 当您获得访问拒绝时,这可能是权限问题,请检查您的角色及其附加到 redshift 集群的权限。

您提到了定义为结构的列,您是否创建了这样的外部表https://stackoverflow.com/a/66705424/13126651 这里我的外部表是具有单个键条目的单个对象,值是对象数组。

示例

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

参考 rolesexternal table 的文档

本文链接:https://www.f2er.com/1151403.html

大家都在问