時,我有一個AWS Kinesis流水流將數據放入S3具有以下配置:串連S3文件使用AWS流水
S3 buffer size (MB)* 2
S3 buffer interval (sec)* 60
,一切工作正常。唯一的問題是Firehose爲每個數據塊創建一個s3文件。 (在我的情況下,每分鐘一個文件,如截圖中所示)。隨着時間的推移,這是很多文件:每天1440個文件,每年525k個文件。
這是很難管理(例如,如果我想水桶複製到另外一個我需要一個到每一個文件一個副本,這將需要時間)。
兩個問題:
- 有沒有辦法告訴室壁運動到組/串連舊文件一起。 (例如,超過24小時的文件會在一天內分組爲一塊)。
- 當從s3文件過多而不是幾個COPY的紅移性能受到影響?我還沒有精確地衡量這一點,但根據我的經驗,很多小文件的表現都非常糟糕。從我記得的情況來看,使用大文件時,大約2M行的COPY約爲1分鐘左右。 2M行有很多小文件(大約11k文件),需要長達30分鐘。
我的兩個主要問題是:
- 更好的紅移COPY演奏(S3)
- 更容易整體S3文件管理(備份,任何形式的操縱)
是的。不幸的是,在我的情況下,我希望記錄能夠快速傳遞。我不能等待900秒,因爲我需要半實時的新數據。所以我正在考慮一個解決方案,將所有數據加載到redshift中,然後在一個(或幾個)s3文件中立即卸載所有數據。 –
適合用例的另一種思路: i)在您的S3存儲桶上安裝AWS Lambda。 ii)根據需要保留AWS kinesis firehose流設置。 iii)因此,如問題所述,將會有太多的文件。 iv)現在,無論何時將發佈到存儲桶,Lambda函數都會觸發將多個文件合併爲一個並將其放入不同的存儲桶中。如果您不想將其放入不同的存儲桶中,可以將其放入具有不同前綴的相同存儲桶中,以便它不會再次觸發lambda功能。這會更簡單。 –