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的零件文件(用合併文件替換)上定義了Hive表。由於合併文件將x'09'添加到最後一個字段中,相同的tbale定義現在在Hue的最後一個字段中顯示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),但無濟於事。 –