【问题标题】:How can I access a file's content from mappers in Amazon elastic map reduce?如何从 Amazon elastic map reduce 中的映射器访问文件内容?
【发布时间】:2015-05-12 15:34:03
【问题描述】:

如果我在 Amazon Web Services 上运行 EMR 作业(使用 Java)来处理大量数据,是否可以让每个映射器访问存储在 S3 上的小文件?请注意,我所说的小文件不是映射器的输入。相反,映射器需要根据小文件中的一些规则来处理输入。例如,也许大输入文件是十亿行文本,我想通过读取存储在 S3 存储桶中的黑名单单词的小文件来过滤掉黑名单中的单词或其他内容。在这种情况下,每个映射器将处理输入数据的不同部分,但它们都需要访问 S3 上的受限单词文件。如何让映射器在 Java 中执行此操作?

编辑:我没有使用 Hadoop 框架,所以没有 setup() 或 map() 方法调用。我只是使用流式 EMR 服务并从输入文件中逐行读取标准输入。

【问题讨论】:

    标签: java hadoop amazon-web-services amazon-s3 elastic-map-reduce


    【解决方案1】:

    您可以直接使用 S3 协议访问映射器中的任何 S3 对象。例如。 s3://mybucket/pat/to/file.txt

    http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-file-systems.html

    您实际上可以使用 S3 访问映射器的输入文件以及您想使用的任何临时查找文件。以前这些是通过使用 s3n:// 协议用于 s3 对象使用和 s3bfs:// 用于块存储来区分的。现在您不必区分,只需使用 s3://

    或者,您可以在 EMR 集群中执行 s3distcp 步骤来复制文件 - 并使其在 hdfs 中可用。 (这不是你问的,但是..)http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_s3distcp.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多