java - 批量将100万行CSV写入S3

标签 java amazon-web-services amazon-s3

我正在尝试在 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/

相关文章:

java - sendRedirect()之后的代码还会被执行吗?

amazon-web-services - 如何在部署时使用 Elastic Beanstalk 指定敏感的环境变量

amazon-web-services - 从 S3 存储桶下载模式匹配条目

ios - AWSS3 上传失败并出现错误

java - Android 编译 : No rule to make target

java - 在向 Android ListView 添加页脚时需要帮助,这样它就不会与 ListView 的条目重叠

java - 在 Android 中使用 YouTube 数据 API 的示例

当 pm2 从脚本启动时,Node.js 应用程序无法访问任何环境变量,但从 ssh 启动时可以

amazon-web-services - Azure DevOps 管道

amazon-s3 - 如何在不删除新版本的情况下将最旧版本对象更改为 aws s3 中的最新版本对象