gpt4 book ai didi

python - 使用多个 list 文件从 S3 加载到 Redshift?

转载 作者:太空宇宙 更新时间:2023-11-03 14:52:54 25 4
gpt4 key购买 nike

我有一个大型 list 文件,其中包含大约 460,000 个条目(所有 S3 文件),我希望将其加载到 Redshift。由于超出我控制范围的问题,其中一些(可能是十几个或更多)条目包含错误的 JSON,如果我一次传递整个 list ,将导致 COPY 命令失败。使用带有键前缀的 COPY 也会以同样的方式失败。

为了解决这个问题,我编写了一个 Python 脚本,它将一次遍历一个 URL 的 list 文件,并使用 psycopg2 对每个 URL 发出 COPY 命令。该脚本还会捕获并记录任何错误,以确保脚本即使遇到错误文件也能运行,并允许我们找到并修复错误文件。

该脚本现已在备用 EC2 实例上运行了一周多一点,仅完成了 75% 左右。我想缩短运行时间,因为该脚本将再次使用。

我对 Redshift 的理解是 COPY 命令是并行执行的,因此我有一个想法 - 将 list 文件分割成更小的 block ,然后运行每个 block 的脚本,从而减少加载所有文件所需的时间文件?

最佳答案

COPY 命令可以非常快速有效地并行加载多个文件。因此,当您为 python 文件中的每个文件运行一个 COPY 命令时,这将花费大量时间,因为您没有利用并行加载。

那么也许您可以编写一个脚本来查找 list 中的不良 JSON,并将其踢出并使用新的干净 list 运行单个 COPY?

或者像您建议的那样,我建议将 list 文件拆分为小块,以便 COPY 可以一次运行多个文件。 (不是每个文件的单个 COPY 命令)

关于python - 使用多个 list 文件从 S3 加载到 Redshift?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45785730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com