У меня есть файл, столбцы которого ограничены символом^A и строками, разделенными символом новой строки \ n \.Ограничитель HIVE n^M issue
Я первый загрузив его на 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/';
Однако, когда я делаю отборное заявление для этой таблицы. Это оказалось беспорядком.
таблица выглядит следующим образом:
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 лечить, что^М как символ новой строки.
Когда я впервые создал файл, я намеренно удалил весь новый символ строки из html, чтобы гарантировать, что каждая запись является одной строкой. Тем не менее, я просто не могу понять, как на самом деле HIVE может относиться к M как символ новой линии. Как я могу обойти это без изменения моего файла.
(я знаю, что это могло бы быть возможно сделать глобальную замену в VI или СЭД ... но это просто не имеет смысла, что мне, как мог Hive лакомство^М как \ п)
И вот билет от Hadoop, который решает проблему с TextInputFormat. Возможно, это будет полезно для вас при поиске конкретного решения https://issues.apache.org/jira/browse/MAPREDUCE-2254 – ybodnar
спасибо за ответ, я обошел его, используя sed -e 's/^ M // g ', чтобы удалить все существующие^M в моем файле и, похоже, сработает. Но изменить конфигурационный файл наверняка будет долгосрочное решение. –