Amazon web services 在查询结构列时面临拒绝访问

Amazon web services 在查询结构列时面临拒绝访问,amazon-web-services,amazon-redshift,amazon-redshift-spectrum,Amazon Web Services,Amazon Redshift,Amazon Redshift Spectrum,我可以使用红移光谱查询我的表。但是,当我尝试访问定义为结构的列时,会出现以下错误: ERROR: Spectrum Scan Error: S3ServiceException:Access Denied,Status 403,Error AccessDenied 知道为什么会这样吗?我想我也在忍受这种痛苦。如果你去会发生什么 set json_serialization_enable to true; 然后选择struct字段 试着 select json_extract_path_tex

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

ERROR: Spectrum Scan Error: S3ServiceException:Access Denied,Status 403,Error AccessDenied

知道为什么会这样吗?

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

set json_serialization_enable to true;
然后选择struct字段

试着

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

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

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

set json_serialization_enable to true;
然后选择struct字段

试着

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

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

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

您提到了定义为struct的列,您是这样创建外部表的吗 在这里,我的外部表是一个带有单键项的单个对象,值是对象数组。

范例

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/';
创建外部表jatinspectrum.extab(
肠阵列
)
行格式SERDE'org.openx.data.jsonserde.jsonserde'
存储为文本文件
位置“s3://XXXXXXXXXXXXX/XXXXXXXXXXXXX/XXXXXXXXXX/”;

参考文档,如您所述,您正在使用亚马逊红移光谱。 当您获得访问权限时,可能是权限问题,请检查您的角色及其附加到红移群集的权限

您提到了定义为struct的列,您是这样创建外部表的吗 在这里,我的外部表是一个带有单键项的单个对象,值是对象数组。

范例

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/';
创建外部表jatinspectrum.extab(
肠阵列
)
行格式SERDE'org.openx.data.jsonserde.jsonserde'
存储为文本文件
位置“s3://XXXXXXXXXXXXX/XXXXXXXXXXXXX/XXXXXXXXXX/”;

参考文档,我的解决方案有效吗?我的解决方案有效吗?