4

AWSでHadoopを使用して処理したいHadoopシーケンスファイルが多数あります。私の既存のコードのほとんどはRubyで書かれているので、AmazonEMRでカスタムRubyMapperおよびReducerスクリプトと一緒にHadoopストリーミングを使用したいと思います。

シーケンスファイルをHadoopストリーミングと統合する方法、および入力がRubyスクリプトに提供される方法に関するドキュメントが見つかりません。SequenceFilesを利用するためにジョブを(EMRで直接、または通常のHadoopコマンドラインで)起動する方法に関するいくつかの指示と、データがスクリプトに提供されることを期待する方法に関するいくつかの情報をいただければ幸いです。

-編集:以前、SequenceFilesではなくStreamFilesを誤って参照していました。私のデータのドキュメントは間違っていたと思いますが、お詫びします。変更すれば答えは簡単です。

4

2 に答える 2

1

これに対する答えは、Hadoopへのコマンドライン引数として入力形式を指定することです。

-inputformat SequenceFileAsTextInputFormat

SequenceFileをテキストとして必要とする可能性がありますが、それがSequenceFileAsBinaryInputFormatより適切な場合もあります。

于 2013-01-10T07:50:19.077 に答える
0

これがあなたが求めているものであるかどうかはわかりませんが、hadoopコマンドラインでrubymapreduceスクリプトを使用するコマンドは次のようになります。

% 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's Hadoop:The Definitive Guide3rdEditionからのものです。ストリーミングに関する非常に優れた情報と、rubyを使用したスト​​リーミング専用のセクションがあります。

于 2012-10-24T19:27:13.290 に答える