在redshift中查询外部表时获取0行

时间:2017-10-31 13:13:47

标签: amazon-athena amazon-redshift-spectrum

我们按如下方式创建了架构:

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访问权限,Full Athena访问权限和s3完全访问权限附加到红移群集

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

select count(*) from spectrum.Customer;

1 个答案:

答案 0 :(得分:1)

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

Reference

我有同样的问题。做到这一点,解决了我的问题。

P.S。显式运行ALTER TABLE命令以创建分区也可以自动化。