分区依据的 Amazon Redshift Spectrum 没有 return 结果
Amazon Redshift Spectrum with partitioned by does not return results
给定按日期分区的 S3 存储桶:
year
|___month
|___day
|___file_*.parquet
我正在尝试使用以下命令在 amazon redshift Spectrum 中创建 table:
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/';
虽然没有抛出错误消息,但查询的结果始终为空,即不return结果。存储桶不为空。有人知道我做错了吗?
在 Amazon Redshift Spectrum 中创建外部 Table 时,它 不会扫描现有分区 。因此,Redshift 并不知道它们的存在。
您需要为每个现有分区执行 ALTER TABLE ... ADD PARTITION
命令。
(Amazon Athena 有一个 MSCK REPAIR TABLE
选项,但 Redshift Spectrum 没有。)
给定按日期分区的 S3 存储桶:
year
|___month
|___day
|___file_*.parquet
我正在尝试使用以下命令在 amazon redshift Spectrum 中创建 table:
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/';
虽然没有抛出错误消息,但查询的结果始终为空,即不return结果。存储桶不为空。有人知道我做错了吗?
在 Amazon Redshift Spectrum 中创建外部 Table 时,它 不会扫描现有分区 。因此,Redshift 并不知道它们的存在。
您需要为每个现有分区执行 ALTER TABLE ... ADD PARTITION
命令。
(Amazon Athena 有一个 MSCK REPAIR TABLE
选项,但 Redshift Spectrum 没有。)