どのように私はHadoopのストリーミングジョブの出力ファイル名と内容を制御していますか?

StackOverflow https://stackoverflow.com/questions/887835

質問

のHadoopストリーミングジョブの出力ファイル名を制御する方法はありますか? 具体的に私はKET減速機の出力が主催する私の仕事の出力ファイルの内容や名前を希望 - 各ファイルは、1つのキーとその名前の値がキーになるだけ含まれます。

アップデート: ただ、答えを見つけた - ジョブの出力形式は、出力ファイル名の制御を可能とするようMultipleOutputFormatから派生したJavaクラスを使用しました。 のhttp://hadoop.apache .ORG /コア/ドキュメント/電流/ API / ORG /アパッチ/ Hadoopの/ mapred / LIB / MultipleOutputFormat.html

私は、このための任意のサンプルを見ていません... 誰もが独自の出力フォーマットのJavaクラスを使用するHadoopのストリーミングサンプルに指摘することはできますか?

役に立ちましたか?

解決

ジョブの出力形式は、出力ファイル名の制御を可能とするようMultipleOutputFormatから派生したJavaクラスを使用しました。 のhttp://hadoop.apache .ORG /コア/ドキュメント/電流/ API / ORG /アパッチ/ Hadoopの/ mapred / LIB / MultipleOutputFormat.html

...唯一のJARが支持されているので、あなたが実際にストリーミング瓶をフォークし、それを参照できるようにするには、ジョブをストリーミングするためにそれにあなたの新しい出力フォーマットクラスを配置する必要があり、Hadoopのストリーミングを使用する場合

の編集:の Hadoopのバージョン0.20.2のように、このクラスは廃止され、あなたが今使用する必要があります。 ます。http:// Hadoopの.apache.org /ドキュメント/ MapReduceの/現在/ API /組織/ apacheの/ Hadoopの/ MapReduceの/ libに/出力/ MultipleOutputs.htmlする

他のヒント

一般的には、Hadoopのは、あなたがディレクトリ全体を出力し、ない個々のファイルであることを考える必要があります。直接ファイル名を制御する方法は、ストリーミングや通常のJavaジョブを使用しているかどうか、ありません。

ジョブが完了した後に

しかし、何も、この分割を行うと、自分の名前を変更するからあなたを停止されません。あなたはHADOOPキーでコンテンツを分割して、新しいファイルに書き込むあなたのスクリプトにすることを-catパス/に/あなた/出力/ディレクトリをDFS / part- *、およびパイプ$することができます。

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