AWS Redshift - 在卸载到 s3 时设置零件大小

Posted

技术标签:

【中文标题】AWS Redshift - 在卸载到 s3 时设置零件大小【英文标题】:AWS Redshift - Set part size while unloading to s3 【发布时间】:2014-07-24 07:55:32 【问题描述】:

在将大型结果集卸载到 s3 时,redshift 会自动将文件拆分为多个部分。有没有办法在卸载时设置每个部分的大小?

【问题讨论】:

截至今天,没有。它设置为 6.2Gb,无法更改。您可以使用限制来仅选择部分数据。 【参考方案1】:

卸载时,可以使用maxfilesize来表示文件的最大大小。 例如:

    unload ('select * from venue')
to 's3://mybucket/unload/' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
maxfilesize 1 gb;

From here

【讨论】:

【参考方案2】:

默认情况下,Redshift 会根据集群中的切片数量将数据卸载到多个文件中。因此,如果集群中有 4 个切片,则每个集群将同时写入 4 个文件。

以下是文档中对您的问题的简短回答。详情请转至here。

"默认情况下,UNLOAD根据集群中的分片数将数据并行写入多个文件。默认选项为ON或TRUE。如果PARALLEL为OFF或FALSE,则UNLOAD串行写入一个或多个数据文件,如果使用一个,则绝对根据 ORDER BY 子句排序。数据文件的最大大小为 6.2 GB。因此,例如,如果您卸载 13.4 GB 的数据,UNLOAD 会创建以下三个文件。"

我希望这会有所帮助。

【讨论】:

以上是关于AWS Redshift - 在卸载到 s3 时设置零件大小的主要内容,如果未能解决你的问题,请参考以下文章

Redshift卸载到S3非常慢

递归地将数据从 redshift 卸载到 S3 存储桶

为啥 Redshift 和 S3 之间的 AWS 文件大小不同?

如何处理 AWS Redshift 卸载命令中的引用值?

AWS:使用从 s3 到 redshift 的复制命令时没有插入任何内容

从 AWS Redshift 到 S3 的 AWS Glue ETL 作业失败