AWS S3:s3存储桶中数千万个json文件的分布式串联

时间:2016-05-12 15:40:39

标签: amazon-web-services amazon-s3

我有一个带有数千万个相对较小的json文件的s3存储桶,每个文件小于10 K.

为了分析它们,我想将它们合并到少量文件中,每个文件每行有一个json(或其他一些分隔符),以及数千个这样的行。

这样我就可以更轻松(并且高效地)使用各种大数据工具。

现在,我很清楚,无法使用一个命令或函数调用,而是需要一个分布式解决方案,因为涉及的文件数量很多。

问题是,是否有准备和打包的东西,或者我必须提出自己的解决方案。

2 个答案:

答案 0 :(得分:1)

不知道任何可以开箱即用的东西,但你可以很容易地自己做。解决方案还很大程度上取决于您完成此任务所需的速度。

2条建议: 1)列出所有文件,拆分列表,下载部分,合并和重新上传。

2)列出所有文件,然后逐个浏览它们并读取/下载并将其写入kinesis steam。配置kinesis通过kinesis firehose将文件转储到s3。

在这两种情况下,棘手的一点是处理失败并确保您不会多次获取数据。

为了完整性,如果文件更大(> 5MB),您还可以利用http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html,这样您就可以直接合并S3中的文件而无需下载。

答案 1 :(得分:-1)

假设每个json文件只有一行,那么我会这样做:

lineWidth

这会将目录中的所有文件连接到新文件cat * >> bigfile

您现在可以一次读取bigfile一行,json解码该行并使用它做一些有趣的事情。

如果您的json文件的格式是为了便于阅读,那么您首先需要combine all the lines in the file into one line