【问题标题】: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

知道为什么会这样吗?

【问题讨论】:

  • 我的解决方案有效吗?

标签: amazon-web-services amazon-redshift amazon-redshift-spectrum


【解决方案1】:

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

set json_serialization_enable to true;

然后选择struct字段?

然后试试

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

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

【讨论】:

    【解决方案2】:

    正如您提到的,您正在使用亚马逊红移光谱。 当您获得访问拒绝时,这可能是权限问题,请检查您的角色及其附加到 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 的文档

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-07
      • 2023-01-06
      • 2011-06-04
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多