質問

マッパー(Pythonスクリプト)のみを使用し、レデューサーを使用せず、出力の長いファイルではなく、出力の各行に対して、ファイル名としてキーを持つ個別のファイルを出力するにはどうすればよいですか?

役に立ちましたか?

解決

Pythonファイル関数を使用してローカルファイルシステム上のテキストファイルに書き込むか、HDFSを使用する場合は Thrift API

他のヒント

inputformatおよびoutputformatクラスは、-inputformatおよび-outputformatコマンドラインパラメーターを使用して置き換えることができます。

これを行う方法の1つの例は、Pythonである dumboプロジェクトにあります。ストリーミングジョブを記述するためのフレームワーク。複数のファイルに書き込むための機能があり、内部的には出力形式を姉妹プロジェクト feathers - fm.last.feathers.output.MultipleTextFiles。

リデューサーは、タプルをキーとして発行する必要があります。タプルの最初のコンポーネントは、キー/値のペアを持つファイルが書き込まれるディレクトリへのパスです。レデューサーとアプリケーションの数に応じて、複数のファイルが残っている場合があります。

ダンボを調べることをお勧めします。ダンボには多くの機能があり、PythonでHadoopにMap / Reduceプログラムを簡単に作成できます。

ストリーミングを使用している場合、outputFormatClassを置き換えることはできますか? ネイティブJava実装では、MultipleTextOutputFormatクラスを拡張し、出力ファイルに名前を付けるメソッドを変更します。次に、JobConfのsetOutputFormatメソッドを使用して、実装を新しい出力形式として定義します

これがストリーミングでも可能かどうかを確認する必要があります。私はいけない:-/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top