我正在开发一个将数据加载到 Redshift 的应用程序。
我想将文件上传到 S3 ,并使用 COPY 命令将数据加载到多个表中。
对于每次这样的迭代,我需要将数据加载到大约 20个表中。
我现在正在创建 20个CSV文件,用于将数据加载到 20个表中,其中对于每次迭代,都会加载 20 个创建的文件放入 20个表格。对于下一次迭代,将创建新的 20 CSV文件并将其转储到 Redshift 。
在我拥有的当前系统中,每个CSV文件最多可以包含 1000行,应将其转储到表中。 20个表的每次迭代最多 20000行。
我想进一步提高性能。我经历了https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-S3.html
在这一点上,我不确定将1个文件加载到1个Redshift表中需要多长时间。将每个文件分割成多个文件并并行加载真的值得吗?
是否有任何来源或计算器可以根据列和行的数量提供大致的性能指标,以将数据加载到 Redshift 表中,以便我甚至在移动之前就可以决定是否继续拆分文件到 Redshift 。
答案 0 :(得分:2)
您还应该通读“加载数据-最佳做法”指南中的建议:https://docs.aws.amazon.com/redshift/latest/dg/c_loading-data-best-practices.html
关于并行文件和数据加载的数量,建议是:
最后一点对于实现最大吞吐量很重要-如果您有8个节点,则需要n * 8个文件,例如16、32、64 ...这样所有节点并行执行最大工作量。
也就是说,从Redshift的角度来看,20,000行是这么少的数据,我不确定任何进一步的优化都会对您目前的流程速度产生重大影响。