Athena returns 分区数据的空白响应,我缺少什么?

Athena returns blank response for Partitioned data, what am I missing?

我使用分区创建了一个 table。我为我的 s3 存储桶文件夹尝试了两种方法,如下所示,但是当我使用包含分区子句的 where 子句查询时,这两种方法都没有找到任何记录。

我的 S3 存储桶如下所示。 part*.csv是我想在Athena中查询的。在输出中,在侧面输出的同一位置还有其他文件夹。

s3://bucket-rootname/ABC-CASE/report/f78dea49-2c3a-481b-a1eb-5169d2a97747/output/part-filename121231.csv s3://bucket-rootname/XYZ-CASE/report/678d1234-2c3a-481b-a1eb-5169d2a97747/output/part-filename213123.csv

我的 table 如下所示 版本 1:

CREATE EXTERNAL TABLE `mytable_trial1`(
  `status` string, 
 `ref` string)
  PARTITIONED BY ( 
  `casename` string, 
  `id` string)
ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY ',' 
LOCATION
  's3://bucket-rootname/'
TBLPROPERTIES (
  'has_encrypted_data'='false', 
  'skip.header.line.count'='1') 

ALTER TABLE mytable_trial1 add partition (casename="ABC-CASE",id="f78dea49-2c3a-481b-a1eb-5169d2a97747") location "s3://bucket-rootname/casename=ABC-CASE/report/id=f78dea49-2c3a-481b-a1eb-5169d2a97747/output/";

select * 来自 mytable_trial1 where casename='ABC-CASE' and report='report' and id='f78dea49-2c3a-481b-a1eb-5169d2a97747' and foldername='output';

版本 2:

 CREATE EXTERNAL TABLE `mytable_trial1`(
      `status` string, 
     `ref` string)
      PARTITIONED BY ( 
      `casename` string, 
      `report` string,
       `id` string,
      `foldername` string)
    ROW FORMAT DELIMITED 
      FIELDS TERMINATED BY ',' 
    LOCATION
      's3://bucket-rootname/'
    TBLPROPERTIES (
      'has_encrypted_data'='false', 
      'skip.header.line.count'='1') 

ALTER TABLE mytable_trial1 add partition (casename="ABC-CASE",report="report",id="f78dea49-2c3a-481b-a1eb-5169d2a97747",foldername="output") location "s3://bucket-rootname/casename=ABC-CASE/report=report/id=f78dea49-2c3a-481b-a1eb-5169d2a97747/foldername=output/";

select * 来自 mytable_trial1 where casename='ABC-CASE' and id='f78dea49-2c3a-481b-a1eb-5169d2a97747'

Show partitions 显示此分区,但没有找到带有 where 子句的记录。

我与 AWS Support 合作,我们能够缩小问题范围。版本 2 非常适合使用,因为它有四个分区,就像我的 S3 存储桶一样。此外,Alter table 命令在位置方面存在问题。我使用了不正确的配置单元格式位置,因为我的实际 S3 位置不是配置单元格式。因此,将命令更正为以下对我有用。

ALTER TABLE mytable_trial1 add partition (casename="ABC-CASE",report="report",id="f78dea49-2c3a-481b-a1eb-5169d2a97747",foldername="output") location "s3://bucket-rootname/ABC-CASE/report/f78dea49-2c3a-481b-a1eb-5169d2a97747/output/";

预览 table 现在显示我的条目。