2016-05-12 160 views
0

我有一個S3桶數以千萬計的相對較小的JSON文件,每次不少於10 K.AWS S3:在S3存儲桶數千萬的JSON文件的分佈式拼接

對它們進行分析,我想將它們合併成少數文件,每個文件每行有一個json(或其他分隔符),以及幾千條這樣的文件。

這可以讓我更容易(並且執行)使用所有類型的大數據工具。

現在,我很清楚這不能用一個命令或函數調用來完成,而是需要一個分佈式解決方案,因爲涉及的文件量很大。

問題是,如果有東西準備好幷包裝好,或者我必須抽出我自己的解決方案。

回答

-1

假設每個JSON文件只有一行,然後我會做:

cat * >> bigfile 

這將Concat的目錄中的所有文件複製到新文件bigfile

您現在可以一次讀取一行bigfile,json解碼該行並對其執行一些有趣的操作。

如果你的json文件格式化爲可讀性,那麼你首先需要combine all the lines in the file into one line

1

不知道那裏有什麼東西可以做到這一點,但你可以很容易地自己做。該解決方案也很大程度上取決於您需要多快才能完成此任務。

2意見建議: 1)列出所有的文件,拆分列表,下載部分,合併和重新上傳。 2)列出所有的文件,並在它們之後一次一個地讀取它們,讀取/下載並將其寫入kinesis蒸汽中。配置kinesis通過kinesis firehose將文件轉儲到s3。

在這兩種情況下,棘手的一點是要處理故障並確保您不會多次獲取數據。

爲了保持完整性,如果文件會更大(> 5MB),您還可以利用http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html,這將允許您直接在S3中合併文件,而無需下載。

+0

kinesis firehose是非常接近我所需要的 – flybywire

+0

是的。你仍然需要閱讀文件內容,然後通過firehose。 – Mircea