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

Posted

技术标签:

【中文标题】在查询结构列时面临访问被拒绝【英文标题】:Facing access denied on querying struct columns 【发布时间】:2021-01-05 18:55:20 【问题描述】:

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

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

知道为什么会这样吗?

【问题讨论】:

我的解决方案有效吗? 【参考方案1】:

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

set json_serialization_enable to true;

然后选择struct字段?

然后试试

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

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

【讨论】:

【参考方案2】:

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

您提到了定义为结构的列,您是否像这样创建了外部表https://***.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/';

参考roles 和external table 的文档

【讨论】:

以上是关于在查询结构列时面临访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

在不同账户的 Lambda 中从 AWS Athena 查询 S3 文件时访问被拒绝

访问被拒绝:获取云端硬盘凭据时权限被拒绝

WMI 访问被拒绝问题

HSQL 访问被拒绝加载文件

服务结构托管 Asp.net WebApi 容器应用程序:403 - 禁止:访问被拒绝。在本地集群上

在 MySQL 中加载数据 infile 的访问被拒绝