我需要每天将数据插入到AWS Redshift。 要求是仅分析插入Redshift的每日批次。 BI工具将Redshift群集用于分析。
问题:
每天“更新”数据集的最佳实践是什么? 我担心的是,这是一项相当繁重的操作,性能将很差,但同时这是一种相当普遍的情况,我相信以前是由多个组织完成的。
答案 0 :(得分:0)
如果数据在S3上,为什么不在其上创建EXTERNAL TABLE
。然后,如果对外部表的查询速度还不够,则可以使用CREATE TABLE AS SELECT
语句将其加载到临时表中,并在加载后将其重命名为惯用表名称。
速写SQL:
CREATE EXTERNAL TABLE external_daily_batch_20190422 (
<schema ...>
)
PARTITIONED BY (
<if anything to partition on>
)
ROW FORMAT SERDE <data format>
LOCATION 's3://my-s3-location/2019-04-22';
CREATE TABLE internal_daily_batch_temp
DISTKEY ...
SORTKEY ...
AS
SELECT * from external_daily_batch_20190422;
DROP TABLE IF EXISTS internal_daily_batch__backup CASCADE;
ALTER TABLE internal_daily_batch rename to internal_daily_batch__backup;
ALTER TABLE internal_daily_batch_temp rename to internal_daily_batch;
顺便说一句,您的所有10TB数据都是可变的吗?不可能进行增量更新吗?