我正在尝试在 S3 上构建一个非常大的 CSV 文件。
- 我想在 S3 上构建此文件
- 我想批量向此文件追加行。
- 行数可以在 10k 到 1M 之间
- 每个批处理的大小可能< 5Mb(因此分段上传不可行)
完成这样的事情的正确方法是什么?
最佳答案
传统上,在大数据处理(“数据湖”)中,与单个表相关的信息存储在目录而不是单个文件中。因此,向表添加信息就像向目录添加另一个文件一样简单。目录中的所有文件都需要具有相同的架构(例如 CSV 列或 JSON 数据)。
文件目录可以与以下工具一起使用:
- Hadoop 上的 Spark、Hive 和 Presto
- 亚马逊雅典娜
- Amazon Redshift Spectrum
这种方法的好处是上述系统可以并行处理多个文件,而不是仅限于以单线程方法处理单个文件。
也常见的是使用gzip等技术压缩文件。这降低了存储要求并加快了从磁盘读取数据的速度。添加其他文件很容易(只需添加另一个 csv.gz
文件),而不必解压缩、追加和重新压缩文件。
底线:建议重新考虑您对“一个伟大的大型 CSV 文件”的要求。
关于java - 批量将100万行CSV写入S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55246262/