1

我们创建了如下模式:

create external schema spectrum
from data catalog
database 'test'
iam_role 'arn:aws:iam::20XXXXXXXXXXX:role/athenaaccess'
create external database if not exists;   

和表格如下:

create external table spectrum.Customer(
Subr_Id integer,
SUB_CURRENTSTATUS varchar(100),
AIN integer,
ACCOUNT_CREATED timestamp,
Subr_Name varchar(100),
LAST_DEACTIVATED timestamp)
partitioned by (LAST_ACTIVATION timestamp)
row format delimited
fields terminated by ','
stored as textfile
location 's3://cequity-redshiftspectrum-test/'
table properties ('numRows'='1000');

访问权限如下:

athenaQuickSight 访问、完全 Athena 访问和 s3 完全访问的角色附加到 redshift 集群

但是,当我们如下查询时,我们得到 0 条记录。请帮忙。

select count(*) from spectrum.Customer;
4

1 回答 1

2

如果您的查询从已分区的外部表返回零行,请检查是否已将分区添加到此外部表。Redshift Spectrum 仅扫描已使用 ALTER TABLE ... ADD PARTITION 显式添加的 Amazon S3 位置中的文件。查询SVV_EXTERNAL_PARTITIONS视图以查找现有分区。为每个丢失的分区运行 ALTER TABLE ADD ... PARTITION。

参考

我遇到过同样的问题。执行上述操作,解决了我的问题。

PS 显式运行 ALTER TABLE 命令来创建分区也可以自动化。

于 2017-11-10T06:56:30.677 回答