如何解决Hive 3.1无法创建从内部/托管表复制架构的外部表
我们尝试制作一个外部配置单元表,该模式的结构与现有的内部/托管表相似,下一步将插入ecternal的数据。
下面的代码使用托管表的复制模式创建外部表
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配置单元表自动创建的 ?
解决方法
您可以尝试以下解决方案:
托管表:
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/';
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。