Улей с использованием serdeproperties дает ошибку - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь создать таблицу кустов, чтобы файловая система hdfs имела формат UTF-8, проблема в том, что запрос выдает ошибку, но не уверен, что я делаю неправильно.

DROP TABLE IF EXISTS output_2057565014;
CREATE TABLE temp.output_2057565014
ROW FORMAT DELIMITED
FIELDS TERMINATED BY 'ธ'
COLLECTION ITEMS TERMINATED BY '|'
MAP KEYS TERMINATED BY '$'
with serdeproperties('serialization.encoding'='UTF-8') 
LOCATION '/tmp/test-2057565014' 
AS
SELECT * from temp.abc

1 Ответ

0 голосов
/ 11 мая 2018

"запрос выдаёт ошибку" > да, но что за тип ?? Может быть, чтение этого сообщения об ошибке поможет. Без этого это просто догадки.
Итак, давайте угадать.


Предложение

ROW FORMAT DELIMITED неявно предполагает, что символами-разделителями являются одиночные символы ASCII-7 , определенные явно (при печати) или их восьмеричным кодом.

Следовательно, FIELDS TERMINATED BY 'ธ' недействительно.

Вы можете попробовать различные обходные пути - изменение разделителя в процессе создания файла исходной информации; изменение разделителя in situ перед загрузкой в ​​HDFS (например, с помощью старой доброй команды sed); пробовать жестко закодированное сопоставление столбцов с помощью RegExSerde (ср. Руководство по языку DLL / CREATE TABLE в разделе "Форматы строк и SerDe") ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...