我有一个文件,其列由 ^A 分隔,行由 '\n' 换行符分隔。
我首先将它上传到 HDFS,然后使用如下命令在 Hive 中创建表:
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/';
但是,当我为该表执行选择语句时。结果一团糟。
该表如下所示:
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
然后我回到文本文件,发现文件中存在多个 ^M 字符,这使得 HIVE 将 ^M 视为换行符。
当我第一次创建文件时,我故意从 html 中删除了所有的换行符,以保证每条记录都是一行。但是,我只是无法理解 HIVE 究竟如何将 ^M 视为换行符。我怎样才能在不修改文件的情况下解决这个问题。
(我知道有可能在 VI 或 sed 中进行全局替换......但这对我来说没有多大意义,HIVE 如何将 ^M 视为 \n)