2016-05-24 94 views
2

我存儲了TB級的點擊流類型的用戶事件數據。它需要按日期進行索引或分區,以便合理快速地查詢較窄的日期範圍。我希望能夠在此上運行聚合作業和查詢。我希望在Amazon EMR或類似的東西中使用Spark。DynamoDB vs S3平面文件?

一種選擇是由天+小時等分開S3平面文件:

s3://my-bucket/20160503_00/data.txt 
s3://my-bucket/20160503_01/data.txt 
s3://my-bucket/20160503_02/data.txt 

我會更傾向於使用木地板列存儲,而不是原始文本,如:

s3://my-bucket/20160503_00/data.parquet 
s3://my-bucket/20160503_01/data.parquet 
s3://my-bucket/20160503_02/data.parquet 

另一種選擇是完全亞馬遜DynamoDB?

每個的優點/缺點是什麼?

+2

不確定SO是pro/con的最佳來源 - 但是:如果您使用s3,則壓縮存儲您的內容以節省大量空間和IO週期(因爲您正在有效地存儲文本,所以它會很好地壓縮。 )也要保持低的記錄 - 文件比率(即每個文件每秒不超過1條記錄,將它們聚合到每個文件一分鐘的值,或者任何可能的情況下)。當我做了很久以前的事情時,我們會每秒同步到s3,但每5分鐘回來並將每秒數據聚合成更大的塊。) – keen

回答

0

您可以將來自AWS Kinesis的數據通過AWS Kinesis Firehose進行流式處理,以便緩衝您的數據並將其保存到S3中128MB or 15 minute chunks中的較小者。 Firehose會自動將您的塊放入子文件夾中,以啓用您所需的基於範圍的查找。