我有以下工作流程。 我需要在S3上标识重复文件,以避免在目的地(Redshift)上出现重复文件。
这是一项连续的作业,将每4小时运行一次。
问题:
有时,具有相同内容但文件名不同的文件出现在S3上。这些文件可以属于不同的时间间隔或不同的日期。例如,如果某个文件在2018年10月1日到达时说one.csv并包含1,2.3,4作为内容,则有可能在2018年10月10日到达一个具有相同内容1,2,3,4但具有不同内容的文件文件名。 如果内容相同,我想避免将此文件加载到S3。 我知道我可以使用文件哈希来识别两个相同的文件,但是我的问题是如何在S3上实现这一目标,以及如何在大量文件中实现这一目标。 最好的方法是什么?
基本上,我想避免将数据加载到已经存在的S3中。
答案 0 :(得分:1)
您可以在redshift中(或其他任何实际位置,如MySQL或dynamodb)添加另一个表,该表将包含上载文件的Etag / md5哈希。
您可能已经有一个脚本,该脚本每4小时运行一次,并将数据加载到redshift中。在同一脚本中,将数据成功加载到redshift后;只需在此表中输入一个即可。另外,在将数据加载到Redshift之前,请检查同一脚本(来自该新表)的检查。
您需要确保使用已加载到redshift中的所有文件的Etag加载此新表。