Redshift - 复制多个清单文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redshift - 复制多个清单文件相关的知识,希望对你有一定的参考价值。

我正在使用AWS Redshift通过COPY命令加载多个S3文件。我是通过清单来做这件事的。我们可能有多个清单文件需要在任何时间点加载到Redshift中。将多个清单文件加载到Redshift的最佳方法是什么?

是否可以执行复制命令传递清单文件的列表/数组,如下所示?

copy schema.table_name
from 's3://my-bucket/manifest1.manifest', 's3://my-bucket/manifest2.manifest', 's3://my-bucket/manifest3.manifest'
credentials 'aws_access_key_id=XXXX;aws_secret_access_key=YYYY'
manifest gzip format as json 'auto';

或者可以从不同的应用程序执行多个复制命令,而不会过多地影响Redshift的整体性能?我对并行执行多个复制命令的担心是它在执行复制时会引入资源争用。

答案

我最终做的是将多个清单文件的内容加入到超级清单中。因此,我没有为500个清单文件执行500个单独的COPY命令,而是将500个清单的内容连接成一个超级清单,然后执行Redshift COPY。

性能提升非常显着。单个清单的Redshift COPY大约需要3分钟。将500加入1个超级清单需要45-90分钟。

另一答案

您可以运行多个复制命令,当然它会影响性能。您只需要进行一些测试来衡量您可以接受的减速水平。

如果要限制可以同时运行的副本数,可以创建一个新用户并按照Tutorial: Configuring Workload Management (WLM) Queues to Improve Query Processing进行操作。假设您将并发设置为1,那么您可以启动多个命令,其中只有一个将运行。

另一答案

为大量数据运行一个大的COPY的问题是Redshift将在磁盘上分配预期表的最大大小,这可能导致DISK FULL异常,如果您将COPY命令分成几个,则可以避免COPY(*将一个接一个地运行。不同时运行)。考虑到Redshift群集中的核心数量,以最大化并行性也很重要。

以上是关于Redshift - 复制多个清单文件的主要内容,如果未能解决你的问题,请参考以下文章

使用多个清单文件从 S3 加载到 Redshift?

使用复制命令和清单文件将 parquet 格式文件加载到 Amazon Redshift 时出错

使用清单从多个 s3 文件夹加载红移表

使用 for 循环从 s3 复制 Redshift

将具有多个值的 JSON 从 S3 复制到 Redshift

使用 COPY 命令将数据从 JSON 文件复制到 Redshift