Ошибка: в строке ParseException 2:0 отсутствует EOF в 'LIKE' рядом с ')'

Я хотел бы создать внешнюю таблицу, используя аналогичную опцию.

CREATE EXTERNAL TABLE IF NOT EXISTS test1 (rec string)
 LIKE 'EPCTR_201804'
 LOCATION '/hdfs/t1/tt1/PR/34/1xx/E1ERPSE/201801/PR/20180202-000758/*';

Но эта ошибка была показана:

FAILED: строка ParseException 2:0 отсутствует EOF в 'LIKE' рядом с ')'

Как я могу решить это, пожалуйста?


person SA2018    schedule 09.01.2019    source источник


Ответы (2)


Вам не нужно указывать схему для новой таблицы. Когда вы используете CREATE TABLE LIKE, новая таблица сохраняет ту же схему, что и старая.

Используйте следующее:

CREATE EXTERNAL TABLE IF NOT EXISTS test1 
 LIKE 'EPCTR_201804'
 LOCATION '/hdfs/t1/tt1/PR/34/1xx/E1ERPSE/201801/PR/20180202-000758/*';
person Nishu Tayal    schedule 09.01.2019
comment
Спасибо, но я получаю эту ошибку ParseException line 1:7 cannot recognize input near 'CREATE' 'EXTERNEL' 'TABLE' in ddl statement - person SA2018; 09.01.2019

Create Table Like должен быть без указания столбцов, потому что LIKE означает создание таблицы с точно такой же схемой, что и другая таблица.

Также расположение таблицы — это папка, в которой хранятся файлы данных, в конце не должно быть /*, например:

CREATE EXTERNAL TABLE IF NOT EXISTS test1 LIKE 'EPCTR_201804'
 LOCATION '/hdfs/t1/tt1/PR/34/1xx/E1ERPSE/201801/PR/20180202-000758';
person leftjoin    schedule 09.01.2019