我有一个 s3 桶,里面有数千万个相对较小的 json 文件,每个文件不到 10 K。
为了分析它们,我想将它们合并成少量文件,每个文件每行一个 json(或其他分隔符),以及数千个这样的行。
这将使我能够更轻松地(并且高效地)使用各种大数据工具。
现在,我很清楚这不能通过一个命令或函数调用来完成,而是需要一个分布式解决方案,因为涉及的文件数量很大。
问题是是否已经准备好并打包了一些东西,或者我必须提出自己的解决方案。
最佳答案
不知道有什么东西可以开箱即用,但您自己可以很容易地做到这一点。解决方案还很大程度上取决于您需要多快才能完成这项工作。
2条建议: 1) 列出所有文件,拆分列表,下载部分,合并并重新上传。
2) 列出所有文件,然后一次一个地检查它们并读取/下载并将其写入运动 Steam 。配置 kinesis 以通过 kinesis firehose 将文件转储到 s3。
在这两种情况下,棘手的一点是处理故障并确保您不会多次获取数据。
为了完整起见,如果文件更大 (>5MB),您还可以利用 http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html这将允许您直接合并 S3 中的文件而无需下载。
关于amazon-web-services - AWS S3 : distributed concatenation of tens of millions of json files in s3 bucket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37191625/