java - 如何从 Amazon elastic map reduce 中的映射器访问文件内容?

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

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

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

最佳答案

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

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

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

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

关于java - 如何从 Amazon elastic map reduce 中的映射器访问文件内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28976556/

相关文章:

java - 将数组传递给注释的语法

java - 无法从部署在tomcat中的jar文件中提取dll文件

Hadoop 自定义可写与第二遍

hadoop - 如何挂载安全HDFS?

amazon-web-services - 如何使用 Logstash Forwarder 将日志发送到 AWS 上的不同节点

amazon-web-services - 使用具有多个证书的 Invoke-WebRequest 在 PowerShell 中重写 CURL

python - 使用 joblib.Memory 在 AWS S3 中缓存数据

Java:公历日期验证问题

hadoop - 为什么我们需要在hdfs-site.xml中设置rpc地址

java - com.microsoft.sqlserver.jdbc.SQLServerDriver 的 ClassNotFoundException