map reduce-如何规划数据文件

ars1skjm  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(422)

我想使用aws emr来查询我将写入s3的大型日志文件。我可以按我喜欢的方式设计文件。数据以每分钟10k个条目的速率创建。
日志由几十个数据点组成,我想收集很长一段时间(几年)的数据来比较趋势等。
创建存储在s3上并由aws emr集群查询的文件的最佳实践是什么?
什么是最佳的文件大小?我应该创建单独的文件,例如每小时一次吗?
命名文件的最佳方法是什么?
我应该把它们放在每日/每小时的桶里还是放在同一个桶里?
处理诸如在一段时间后添加一些数据或更改我使用的数据结构之类的事情的最佳方法是什么?
我应该压缩一些东西,比如在url中省略域名,还是尽可能多地保留数据?
有没有像分区这样的概念(数据是基于100个网站的,所以我可以使用网站ID为例)。我必须能够查询所有的数据一起,或分区。
谢谢!

a7qyws3x

a7qyws3x1#

在我看来,您应该使用每小时一次的bucket来存储s3中的数据,然后使用管道来安排mr作业来清理数据。
一旦你清理了数据,你就可以把它保存在s3中的某个位置,然后你就可以每小时运行一个数据管道,相对于你的mr管道滞后1小时,将这个过程数据放入红移。
因此,在一天的凌晨3点,您将有3个小时的s3处理数据和2个小时的红移数据库处理。
为此,您可以有一台专用于运行管道的机器,并在该机器上定义shell script/perl/python或其他脚本来将数据加载到数据库中。您可以使用aws bucketing格式化程序进行年、月、日期、小时等。例如。
{格式(minushours(@scheduledstartime,2),'yyyy')}/mm={格式(minushours(@scheduledstartime,2),'mm')}/dd={格式(minushours(@scheduledstartime,2),'dd')}/hh={格式(minushours(@scheduledstartime,2),'hh')}/*

相关问题