繁体   English   中英

带有SequenceFile的Hadoop流(在AWS上)

[英]Hadoop Streaming with SequenceFile (on AWS)

我有大量的Hadoop SequenceFiles,我想在AWS上使用Hadoop进行处理。 我现有的大部分代码都是用Ruby编写的,所以我想在Amazon EMR上使用Hadoop Streaming和我自定义的Ruby Mapper和Reducer脚本。

我找不到任何关于如何将Sequence Files与Hadoop Streaming集成的文档,以及如何将输入提供给我的Ruby脚本。 我很欣赏一些关于如何启动作业的指令(直接在EMR上,或者只是一个普通的Hadoop命令行)来使用SequenceFiles以及如何期望将数据提供给我的脚本的一些信息。

- 编辑:我之前提到过StreamFiles而不是SequenceFiles。 我认为我的数据文档不正确,但道歉。 变化很容易回答。

答案是将输入格式指定为Hadoop的命令行参数。

-inputformat SequenceFileAsTextInputFormat

您可能希望将SequenceFile作为文本,但如果更合适,还有SequenceFileAsBinaryInputFormat

不确定这是否是您要求的,但使用rubo map使用hadoop命令行减少脚本的命令将如下所示:

% hadoop jar $HADOOP_INSTALL/contrib/streaming/hadoop-*-streaming.jar \
  -input input/ncdc/sample.txt \
  -output output \
  -mapper ch02/src/main/ruby/max_temperature_map.rb \
  -reducer ch02/src/main/ruby/max_temperature_reduce.rb

您可以(并且应该)使用具有大数据集的组合器。 使用-combiner选项添加它。 合并器输出将直接输入到您的映射器中(但不保证将调用多少次,如果有的话)。 否则,您的输入将被拆分(根据标准的hadoop协议)并直接输入您的映射器。 这个例子来自O'Reily的Hadoop:The Definitive Guide第3版。 它有一些关于流媒体的非常好的信息,以及一个专门用于流式传输ruby的部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM