我有一个 s3 存储桶,其中包含大约 300gb 的日志文件,没有特定的顺序。
我想使用日期时间戳对这些数据进行分区以在 hadoop-hive 中使用,以便与特定日期相关的日志行聚集在同一个 s3 '文件夹'中。例如,1 月 1 日的日志条目将位于与以下命名匹配的文件中:
s3://bucket1/partitions/created_date=2010-01-01/file1
s3://bucket1/partitions/created_date=2010-01-01/file2
s3://bucket1/partitions/created_date=2010-01-01/file3
ETC
什么是我转换数据的最佳方式?我是否最好只运行一个脚本,一次读取每个文件并将数据输出到正确的 s3 位置?
我敢肯定有一个使用hadoop的好方法,有人可以告诉我那是什么吗?
我试过的:
我尝试通过传入一个映射器来使用hadoop-streaming,该映射器收集每个日期的所有日志条目,然后将它们直接写入S3,没有为reducer返回任何内容,但这似乎会产生重复。(使用上面的例子,我在 1 月 1 日得到了 250 万个条目,而不是 140 万个)
有谁知道如何最好地解决这个问题?