Hive 3.1 не может создать внешнюю таблицу, копирующую схему из внутренней / управляемой таблицы.

мы пытаемся создать внешнюю таблицу улья, схема которой похожа на существующую внутреннюю / управляемую таблицу, и на следующем шаге будут вставлены данные для внешней таблицы.

Ниже кода для создания внешней таблицы с копией схемы управляемой таблицы

CREATE EXTERNAL TABLE IF NOT EXISTS sls_test_ext like sls_test
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\n"
LOCATION "/bla/bla/";

Но когда он выполняется, он возвращается, как показано ниже

ERROR : FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:sp2020.sls_test_ext cannot be declared transactional because it's an external table)
INFO  : Completed executing command(queryId=hive_20201111233927_593d38ff-39ed-412e-b128-41d949a3a476); Time taken: 0.017 seconds
Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:sp2020.sls_test_ext cannot be declared transactional because it's an external table) (state=08S01,code=1)

Затем мы пытаемся изменить приведенный выше код, как показано ниже.

CREATE EXTERNAL TABLE IF NOT EXISTS sls_test_ext like sls_test
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\n"
LOCATION "/bla/bla/"
TBLPROPERTIES ("transactional"="false");

Он вернет ту же ошибку. Есть ли отсутствующий код или нужно изменить конфигурацию улья?

NB: управляемая таблица создается автоматически с помощью sqoop import hive-table?


person m hanif f    schedule 11.11.2020    source источник


Ответы (1)


Вы можете попробовать следующее решение:

Управляемая таблица:

CREATE TABLE sls_test(<columns>)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';

Внешняя таблица:

CREATE EXTERNAL TABLE IF NOT EXISTS sls_test_ext
LIKE sls_test
LOCATION '/bla/bla/';
person Soumendra Mishra    schedule 11.11.2020
comment
что, если управляемая таблица создана с помощью sqoop import hive-table? Извините, что упомянул об этом раньше, и я обновил его, о котором идет речь - person m hanif f; 12.11.2020
comment
Это не проблема. Единственное, на что вам нужно обратить внимание, это то, что разделитель, используемый для управляемой таблицы, должен совпадать с разделителем, используемым в файле, хранящемся в месте HDFS. - person Soumendra Mishra; 12.11.2020