我想使用AWS EMR查询我将写入S3的大型日志文件。我可以按照自己喜欢的方式设计文件。数据以10K条目/分钟的速率创建。
日志由数十个数据点组成,我希望在很长一段时间(年)内收集数据以比较趋势等。
创建将存储在S3上并由AWS EMR集群查询的此类文件的最佳做法是什么?
什么是最佳文件大小?我应该按小时创建单独的文件吗?
命名文件的最佳方法是什么?
我应该将它们放在每日/每小时的桶中,还是放在同一个桶中?
处理一段时间后添加一些数据或更改我使用的数据结构等问题的最佳方法是什么?
我是否应该通过从网址中删除域名或保留尽可能多的数据来压缩内容?
是否存在分区等概念(数据基于100个网站,因此我可以使用网站ID)。我必须能够一起查询所有数据,或者通过分区查询。
谢谢!
答案 0 :(得分:0)
在我看来,您应该使用每小时桶来存储s3中的数据,然后使用管道来安排您的mr作业清理数据。
一旦你清理了数据,你就可以将它保存到s3中的某个位置,然后你就可以在1小时的时间内按照你的MR管道运行一个数据管道,将这个过程数据放到红移中。 / p>
因此,在每天凌晨3点,您将在s3中处理3小时的处理数据,并将2小时处理为红移dB。
要做到这一点,你可以拥有一台专用于运行管道的机器,在那台机器上你可以定义shell脚本/ perl / python或者脚本来将数据加载到你的dB。 您可以将AWS bucketing格式化程序用于年,月,日,小时等。例如。
{格式(minusHours(@ scheduledStartTime,2),' YYYY')} /毫米=#{格式(minusHours(@ scheduledStartTime,2),' MM')} / DD =#{格式(minusHours(@ scheduledStartTime,2),' DD')} / HH =#{格式(minusHours(@ scheduledStartTime,2),' HH')} / *