проблема билайн с разделителем u0001

У меня есть файл HQL, который содержит оператор создания таблицы.

CREATE TABLE IF NOT EXISTS employee ( eid int, name String,
salary String, destination String)
COMMENT 'Employee details'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '^A'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;

Разделителем полей таблицы является / u0001 (ctrl-A). Когда я запускаю этот hql-файл с помощью куста (hive-f), он работает отлично. Но когда я запускаю с помощью beeline, я получаю исключение разбора

[cloudera@quickstart Desktop]$ beeline -u jdbc:hive2://quickstart:10000/default -n admin -d org.apache.hive.jdbc.HiveDriver -f createtable.hql 
Connecting to jdbc:hive2://quickstart:10000/default
Connected to: Apache Hive (version 1.1.0-cdh5.4.2)
Driver: Hive JDBC (version 1.1.0-cdh5.4.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://quickstart:10000/default> CREATE TABLE IF NOT EXISTS employenter code hereee ( eid int, name String,
0: jdbc:hive2://quickstart:10000/default> salary String, destination String)
0: jdbc:hive2://quickstart:10000/default> COMMENT 'Employee details'
0: jdbc:hive2://quickstart:10000/default> ROW FORMAT DELIMITED
0: jdbc:hive2://quickstart:10000/default> 'FIELDS TERMINATED BY '
0: jdbc:hive2://quickstart:10000/default> LINES TERMINATED BY '\n'
0: jdbc:hive2://quickstart:10000/default> STORED AS TEXTFILE;
Error: Error while compiling statement: FAILED: ParseException line 5:0 cannot recognize input near ''FIELDS TERMINATED BY '' 'LINES' 'TERMINATED' in serde properties specification (state=42000,code=40000)

Похоже, что оболочка beeline не может правильно проанализировать непечатаемый символ (ctrl a). Но у клиента улья нет никаких проблем.

Любая помощь будет оценена


person x_coder    schedule 15.03.2017    source источник


Ответы (1)


Используйте один из следующих вариантов:

... fields terminated by '\001' (Octal)
... fields terminated by '1' (Decimal)
... fields terminated by '\u0001' (Hexadecimal)

Обратите внимание, что была ошибка, связанная с литералами Unicode (''), которая должна быть исправлена ​​в версии 2.1, поэтому использование 3-го варианта не будет работать в более ранних версиях. https://issues.apache.org/jira/browse/HIVE-13434

person David דודו Markovitz    schedule 15.03.2017