我正在尝试在S3上构建一个非常大的CSV文件。
完成这样的事情的正确方法是什么?
答案 0 :(得分:1)
传统上,在大数据处理(“数据湖”)中,与单个表相关的信息存储在目录而不是单个文件中。因此,将信息附加到表就像将另一个文件添加到目录一样简单。目录中的所有文件都必须具有相同的架构(例如CSV列或JSON数据)。
然后可以使用以下工具使用文件目录:
此方法的优点在于,上述系统可以并行处理多个文件,而不仅限于使用单线程方法处理单个文件。
常见的做法是使用 gzip 之类的技术压缩文件。这降低了存储要求,并使从磁盘读取数据的速度更快。添加其他文件很容易(只需添加另一个csv.gz
文件),而不必解压缩,附加和重新压缩文件。
底线:建议重新考虑您对“一个很大的CSV文件”的要求。
答案 1 :(得分:1)
“一个大文件”对您不起作用-您无法将行追加到s3文件中,而无需先下载整个文件,添加行,然后在旧文件上上传新文件-对于小文件,它可以工作,但是随着文件变大,带宽和处理将在几何上增加,并且可能变得非常缓慢,甚至可能会很昂贵。
最好将您的设计重构为使用许多小文件而不是一个大文件。
答案 2 :(得分:0)
在S3上保留一个5MB的垃圾对象,并对其进行级联,其中第1部分= 5MB的垃圾对象,第2部分=您要上传和连接的文件。继续对每个片段重复此操作,最后使用范围复制删除5MB垃圾。