2

我们尝试创建一个外部配置单元表,其架构与现有的内部/托管表相似,下一步将插入外部配置单元的数据。

在使用托管表的复制模式创建外部表的代码下方

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");

它将返回相同的错误。是否缺少任何代码或需要更改一些配置单元配置

注意:托管表是使用 sqoop import hive-table 自动创建的?

4

1 回答 1

0

您可以尝试以下解决方案:

托管表:

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/';
于 2020-11-11T18:16:07.923 回答