我有一个大的清单文件,其中包含大约460,000个条目(所有S3文件),我希望加载到Redshift。由于我无法控制的问题,这些条目中的一些(可能是一打或更多)包含错误的JSON,如果我一次传入整个清单,会导致COPY命令失败。使用带键前缀的COPY也会以相同的方式失败。使用多个清单文件从S3加载到Redshift?
为了解决这个问题,我编写了一个Python脚本,它将一次一次通过清单文件一个URL,并为每个使用psycopg2的COPY命令发出一个COPY命令。该脚本还会捕获并记录任何错误,以确保脚本即使在遇到错误文件时也能运行,并允许我们找到并修复错误的文件。
这个脚本现在已经运行了一个多星期,在一个备用的EC2实例上运行了一个多星期,并且只完成了大约75%。我想降低运行时间,因为此脚本将再次使用。
我对Redshift的理解是,COPY命令是并行执行的,而且我有一个想法 - 将清单文件拆分为更小的块,然后运行脚本,每个块都会减少加载所有块的时间文件?