在查询结构列时面临访问被拒绝
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 文件时访问被拒绝