批量上传到 Amazon Redshift

Posted

技术标签:

【中文标题】批量上传到 Amazon Redshift【英文标题】:Bulk upload to Amazon Redshift 【发布时间】:2019-04-22 06:52:57 【问题描述】:

我需要每天将数据插入 AWS Redshift。 要求是仅分析插入 Redshift 的每日批次。 BI 工具使用 Redshift 集群进行分析。

问题:

每天“更新”数据集的最佳做法是什么? 我担心这是一个相当繁重的操作,性能会很差,但同时这是一个很常见的情况,我相信它是由多个组织完成的。

【问题讨论】:

请修改您的问题以提供更多详细信息。 1)大约有多少行? 2)大约什么大小的集群? 3)您的数据是如何组织的?很多表? 1张桌子?排序键?分配键? 4)您目前的批量上传方法是什么? 5) 你在表上运行什么样的查询?什么加入?什么过滤器? 6) 每天有多少查询 7) 您需要多快的查询返回? “续订”是什么意思?您只是想将来自 Amazon S3 的数据加载到一个空表中,还是尝试进行插入/更新(更新插入)? 嗨,约翰。数据量约为 10TB。是的,它在 s3 上,Redshift 是一个通过 BI 工具分析数据的多租户环境。每天需要将新批次 10TB 加载到 Redshift。由于这个原因,使用了Redshift集群我不知道每天“更新”数据的最佳方式是什么。 【参考方案1】:

如果数据在 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 数据都是可变的吗?不能增量更新吗?

【讨论】:

以上是关于批量上传到 Amazon Redshift的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 sql server 增量上传到 Amazon Redshift [关闭]

批量上传图片到 s-s-rS

node批量读取本地图片并上传

批量上传到 iTunes 商店

批量上传

批量导入Npm包依赖到Nexus私服(批量上传脚本)