【发布时间】:2017-08-20 18:49:48
【问题描述】:
我有一个包含大约 460,000 个条目(所有 S3 文件)的大型清单文件,我希望将其加载到 Redshift。由于我无法控制的问题,其中一些(可能是十几个或更多)条目包含错误的 JSON,如果我一次传入整个清单,这将导致 COPY 命令失败。使用带有键前缀的 COPY 也会以同样的方式失败。
为了解决这个问题,我编写了一个 Python 脚本,它一次通过一个 URL 遍历清单文件,并使用 psycopg2 为每个 URL 发出一个 COPY 命令。该脚本还将捕获并记录任何错误,以确保脚本即使遇到错误文件也能运行,并允许我们定位和修复错误文件。
该脚本已经在一个备用 EC2 实例上运行了一个多星期,仅完成了大约 75%。我想降低运行时间,因为这个脚本会被再次使用。
我对 Redshift 的理解是 COPY 命令是并行执行的,因此我有了一个想法 - 将清单文件分成更小的块,然后运行每个块的脚本,以减少加载所有文件所需的时间文件?
【问题讨论】:
标签: python amazon-web-services amazon-s3 amazon-redshift