2017-08-10 5 views
0

以下のhadoop-streaming.jarコマンドを使用してHDFSの場所に* _0(HDFSの一部のファイル)ファイルをマージしようとしています。hadoop-streaming.jarが各行の末尾にx'09を追加します

hadoop jar $HDPHOME/hadoop-streaming.jar -Dmapred.reduce.tasks=1 -input $INDIR -output $OUTTMP/${OUTFILE} -mapper cat -reducer cat 

物事はうまく動作 - コマンド上記の結果は、各行の最後にX'09' を追加するように見える、とことを除いて、私は、問題に入ります。

最後のフィールドがBIGINTとして定義されているパートファイル(マージされたファイルで置き換えられます)の上に定義されたハイブテーブルがあります。以来、マージされたファイルは最後のフィールドにx'09 'を追加する - tbaleの同じ定義は、色相の最後のフィールドにNULLを表示するようになりました(510408はX'09'が追加されたので番号ではなくなりました)。

パートファイルのデータ。私が起きてからこれを避けるにはどうすればよいマージされたファイルに

00000320 7c 35 31 30 34 30 38 0a       ||510408.| 

データ(上記のコマンドの結果)

00000320 7c 35 31 30 34 30 38 09 0a      ||510408..| 

?これを防ぐためにコマンドで設定できるオプションはありますか?

助けや指導に時間を割くことができます。

+0

「x09」はTAB特殊文字です。 Hadoop Streamingのデフォルトのフィールドセパレータは何ですか? –

+0

完全に制御していないような、不器用な連結ジョブを実行する代わりに、Hadoopアーカイブファイル(HAR)を作成することを検討しましたか? –

+0

@ Samson Scharfrichter - デフォルトのフィールド区切り文字はTABです。私はそれを他のもの(stream.map.output.field.separator)に変更しようとしていますが、まだ役に立たないです。 –

答えて

0

私はanswerinこのpostた -

は、以下のオプションを追加するには、それを解決しているようです。

-D mapred.textoutputformat.separator=<delimiter-of-input-file> 
関連する問題