以下の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..|
?これを防ぐためにコマンドで設定できるオプションはありますか?
助けや指導に時間を割くことができます。
「x09」はTAB特殊文字です。 Hadoop Streamingのデフォルトのフィールドセパレータは何ですか? –
完全に制御していないような、不器用な連結ジョブを実行する代わりに、Hadoopアーカイブファイル(HAR)を作成することを検討しましたか? –
@ Samson Scharfrichter - デフォルトのフィールド区切り文字はTABです。私はそれを他のもの(stream.map.output.field.separator)に変更しようとしていますが、まだ役に立たないです。 –