我想将大量数据从 Amazon Simple Storage Service (Amazon S3) 加载到 Amazon Redshift 中并保持最佳性能。
简短描述
要将来自 Amazon S3 的数据添加到您的 Amazon Redshift 表中,您可以使用 INSERT 或 COPY 命令。但是,最佳做法是使用 COPY 命令,因为它的效率更高。COPY 使用大规模并行处理 (MPP) 架构同时从 S3 存储桶中的文件加载数据。
有关要使用的其他方法,请参阅在 Amazon Redshift 中加载数据。
解决方法
运行一个 COPY 命令
仅运行一个 COPY 命令来加载一个表。如果您使用多个并发 COPY 命令从多个文件加载一个表,则 Amazon Redshift 会执行序列化加载并可能会减慢速度。
准备数据文件
要高效地使用 COPY 命令,还必须准备数据文件。文件数量及其大小会影响并行处理能力。
如果您在 COPY 命令中指定多个文件,则 Amazon Redshift 会并行加载数据。要准备数据文件,请确保它们的大小大致相同,范围从 1 MB 到 1 GB。
对于 Redshift 配置的集群,最佳做法是使用数量为切片数量倍数的文件。对于 Amazon Redshift Serverless 而言,最佳做法是使用数量为 128 的倍数的文件。有关详细信息,请参阅加载数据文件。
要获取 Redshift 配置的集群的切片数量,请运行以下查询:
select count(*) from STV_SLICES where type = 'D';
**注意:**当您在 COPY 命令中指定一个未压缩的 .csv、Parquet 或 ORC 文件时,Amazon Redshift 会拆分大于 128 MB 的文件。
监控 COPY 命令状态
要查看 COPY 命令状态,可以检查系统表。
系统表记录了 COPY 命令的详细信息,包括文件数、文件大小和加载的行数。您可以监控这些表以确定可以改进的性能以及 COPY 命令失败的原因。
有关 COPY 命令的详细信息,请参阅 SYS_LOAD_HISTORY 和 SYS_LOAD_DETAIL。
有关 COPY 命令错误的详细信息,请参阅 SYS_LOAD_ERROR_DETAIL。
相关信息
Amazon Redshift 加载数据的最佳实践
使用 COPY 命令加载表
从压缩和未压缩文件加载数据