AWS Athena:不允许从没有列的关系中选择 *

Har*_*rsh 8 amazon-web-services amazon-athena

尝试访问某些表但某些表工作正常时遇到以下错误,这可能是什么原因。

询问:

SELECT * FROM icbs_cup00901_d LIMIT 1
Run Code Online (Sandbox Code Playgroud)

相同的查询适用于其他表,所以我很困惑可能是什么原因,并且查询中提到的表有 8 列字符串数据类型。

错误:您的查询有以下错误:

SYNTAX_ERROR:第 1:8 行:不允许从没有列的关系中选择 *

此查询针对“bpd_ds_db”数据库运行,除非查询限定。请在我们的论坛上发布错误消息或联系客户支持,并提供查询 ID:a462d56e-952b-4a6f-a275-b0c9db0301b0。

我已经检查过,我们在同一个表中有 8 个字符串数据类型的列,并且完全相同的查询适用于某些表,所以我很困惑可能是什么问题

CREATE EXTERNAL TABLE icbs_cup00901_d( 
    cux1ac_acct_surr_id string, 
    cux1ap string, 
    cux1cs_cust_surr_id string, 
    cux1ty string, 
    cuxbk string, 
    cuxnot string, 
    cuxrec string, 
    cuxrel string
)

ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS 
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' 
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' 
LOCATION 's3://bpd-datalake/00Raw/datasets/parquet/DWH/ICBS_CUP00901_D' 
TBLPROPERTIES ( 
   'lastUpdateDate'='2021-09-30 03:02:04.780351', 
   'last_modified_by'='hadoop', 
   'last_modified_time'='1632970985', 
   'parquet.compress'='GZIP', 'transient_lastDdlTime'='1632970985'
)
Run Code Online (Sandbox Code Playgroud)

Bob*_*172 17

我也遇到了同样的问题,发现是因为我的用户没有足够的权限。该错误不是很有帮助,但我认为它看不到列,因此给出了该错误。

通过在 AWS Lake Formation 中添加权限来解决该问题。在“数据湖权限”下,确保您的用户至少对数据库和表具有“描述”和“选择”权限。