gpt4 book ai didi

hadoop - 将不同 S3 文件夹中的文件作为输入传递给 mapreduce

转载 作者:可可西里 更新时间:2023-11-01 16:32:12 32 4
gpt4 key购买 nike

我们的日志文件存储在 S3 上的年/月/日/小时桶中。结构见下。

我如何将第 20 天的所有日志作为我的 map reduce 程序的输入传递?

例如:

bucket = logs/year=2014/month=8/day=20/hour=1/log1_1.txt

bucket = logs/year=2014/month=8/day=20/hour=2/log2_1.txt

bucket = logs/year=2014/month=8/day=20/hour=2/log2_2.txt

bucket = logs/year=2014/month=8/day=20/hour=2/log2_3.txt

bucket = logs/year=2014/month=8/day=20/hour=3/log3_1.txt

bucket = logs/year=2014/month=8/day=20/hour=4/log4_1.txt

最佳答案

当您说“存储桶”时,您实际上是指不同的 S3 存储桶,还是指存储桶中的文件夹/目录?创建那么多的存储桶最终会达到 S3 帐户对您可以创建的存储桶数量的限制。

假设您指的是存储桶中的文件夹/目录,请使用 s3distcp作为您的 EMR 集群中的一个步骤,将您想要的日志复制到 HDFS,然后使用 HDFS 目录作为 MR 程序的输入

s3distcp 使用一个 src 目录和一个 srcPattern 来过滤在 src 中找到的项目。在您的示例中,您可以:

./elastic-mapreduce --jobflow JobFlowID --jar \
/home/hadoop/lib/emr-s3distcp-1.0.jar \
--arg --src --arg s3://logs/ \
--arg --srcPattern --arg '.*day-20.*'
--arg --dest --arg hdfs://input/

路径中day=20 的所有日志文件将被复制到具有JobFlowID 的EMR 集群的HDFS 上的输入目录。

关于hadoop - 将不同 S3 文件夹中的文件作为输入传递给 mapreduce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25492922/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com