【发布时间】:2021-08-29 10:03:19
【问题描述】:
给定一个按日期分区的 S3 存储桶:
year
|___month
|___day
|___file_*.parquet
我正在尝试使用以下命令在 amazon redshift Spectrum 中创建一个表:
create external table spectrum.visits(
ip varchar(100),
user_agent varchar(2000),
url varchar(10000),
referer varchar(10000),
session_id char(32),
store_id int,
category_id int,
page_id int,
product_id int,
customer_id int,
hour int
)
partitioned by (year char(4), month varchar(2), day varchar(2))
stored as parquet
location 's3://visits/visits-parquet/';
虽然没有抛出错误信息,但查询的结果始终为空,即不返回结果。桶不为空。有人知道我做错了吗?
【问题讨论】:
-
您是否使用
ALTER TABLE ADD PARTITION添加了现有分区?见:Creating external tables for Amazon Redshift Spectrum - Amazon Redshift -
我没有。通过添加`ALTER TABLE spectrum.visits ADD PARTITION (year='2021', month='4', day='1') location 's3://visits/visits-parquet/year=2021/month=4/day =1/' ` 对于每个日期,它开始产生结果。就是这样。
标签: amazon-web-services amazon-s3 amazon-redshift-spectrum