我想使用AWS EMR查询要写入S3的大型日志文件。我可以按自己喜欢的任何方式设计文件。数据以每分钟10K条目的速率创建。
日志包含数十个数据点,我想收集很长一段时间(几年)的数据以比较趋势等。
创建将存储在S3上并由AWS EMR集群查询的文件的最佳实践是什么?
最佳文件大小是多少?例如应该每小时创建一个单独的文件?
命名文件的最佳方法是什么?
我应该将它们放在每日/每小时的水桶中还是全部放在同一个水桶中?
处理诸如一段时间后添加一些数据或更改我使用的数据结构之类的最佳方法是什么?
我应该例如通过将域名排除在网址之外来压缩内容,还是保留尽可能多的数据?
有没有像分区这样的概念(数据基于100多个网站,因此我可以使用网站ID)。我必须能够一起或按分区查询所有数据。
谢谢!
在我看来,您应该使用每小时存储桶将数据存储在s3中,然后使用管道安排您的Mr作业来清理数据。
一旦您清除了数据,就可以将其保存在s3中的某个位置,然后可以相对于您的MR管道按每小时1个小时的延迟每小时运行一次数据管道,以将该过程数据放入redshift。
因此,在一天的凌晨3点,您将在s3中处理3个小时的数据,并将2个小时处理为redshift dB。
为此,您可以拥有一台专用于运行管道的机器,并且可以在该机器上定义shell脚本/ perl / python或类似的脚本以将数据加载到dB。您可以将AWS存储桶格式化程序用于年,月,日期,小时等。例如
{format(minusHours(@ scheduledStartTime,2),'YYYY')} / mm =#{format(minusHours(@ scheduledStartTime,2),'MM')} / dd =#{format(minusHours(@ scheduledStartTime,2) ,'dd')} / hh =#{format(minusHours(@ scheduledStartTime,2),'HH')} / *
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句