Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 DynamoDB vs S3平面文件?_Amazon S3_Amazon Dynamodb_Parquet_Bigdata_Nosql - Fatal编程技术网

Amazon s3 DynamoDB vs S3平面文件?

Amazon s3 DynamoDB vs S3平面文件?,amazon-s3,amazon-dynamodb,parquet,bigdata,nosql,Amazon S3,Amazon Dynamodb,Parquet,Bigdata,Nosql,我正在存储TB的点击流类型的用户事件数据。它需要按日期进行索引或分区,以便可以合理快速地查询狭窄的日期范围。我希望能够在此基础上运行聚合作业和查询。我希望在AmazonEMR或类似的东西中使用Spark 一个选项是按天+小时划分的S3平面文件,如: s3://my-bucket/20160503_00/data.txt s3://my-bucket/20160503_01/data.txt s3://my-bucket/20160503_02/data.txt 我更可能使用拼花地板柱状存储,而

我正在存储TB的点击流类型的用户事件数据。它需要按日期进行索引或分区,以便可以合理快速地查询狭窄的日期范围。我希望能够在此基础上运行聚合作业和查询。我希望在AmazonEMR或类似的东西中使用Spark

一个选项是按天+小时划分的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
另一个选择是完整的Amazon DynamoDB


每种方法的优缺点是什么?

您可以从AWS Kinesis流式传输数据,以缓冲数据并将其以较小的格式保存到S3。Firehose会自动将您的区块放在子文件夹中,以支持您所需的基于范围的查找。

不确定pro/con的最佳来源是什么-但是:如果您使用s3,请将内容压缩存储以节省大量空间和IO周期(因为您有效地存储了文本,因此它会很好地压缩),保持您的记录与文件的比率较低(即,不是每个文件每秒1条记录,而是将它们聚合到每个文件一分钟的值,或者任何合适的值——如果可能的话)。很久以前,当我做类似的事情时,我们会每秒同步到s3,但每5分钟返回一次,并将每秒的数据聚合成更大的数据块……)