我有它的列由^ A和「\ n」換行字符分隔行分隔的文件。HIVE分隔符 n^M的問題
我第一次上傳到HDFS,然後在蜂巢使用命令這樣創建表:
CREATE EXTERNAL TABLE
IF NOT EXISTS
html_sample
(ts string,
url string,
html string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
LINES TERMINATED BY '\n'
LOCATION '/tmp/directoryname/';
然而,當我對這個表做了select語句。結果是一團糟。
表看起來是這樣的:
ts url html
10082013 http://url.com/01 <doctype>.....style="padding-top: 10px;
text-align... NULL NULL
text-align... NULL NULL
text-align... NULL NULL
10092013 http://url.com/02 <doctype>.....style="padding-top: 10px;
text-align... NULL NULL
text-align... NULL NULL
text-align... NULL NULL
然後我又回到了文本文件,並找到該文件,這使得HIVE治療是^ M作爲新行字符存在幾個^ M字符。
當我第一次創建的文件,我特意刪除了所有的換行字符從HTML,以保證每條記錄是一行。但是,我不明白HIVE如何能將^ M當作換行符。我怎樣才能解決這個問題,而無需修改我的文件。
(我知道有可能做全局替換在VI或sed的...但它只是沒有那麼多有道理的,我怎麼可能HIVE治療^ M爲\ n)的
下面是來自Hadoop的一票與解決的TextInputFormat問題。也許這將是對你有所幫助,同時尋找一個具體的解決方案https://issues.apache.org/jira/browse/MAPREDUCE-2254 – ybodnar
感謝您的回答,我周圍使用SED -e「S/^ M // g'刪除我的文件中所有現有的^ M,並且似乎工作。但修改配置文件肯定是一個長期的解決方案。 –