Hortonworks (HDP) 到 Cloudera (CDP) 迁移后无法创建托管 Hive 表

问题描述

作为从 Hortonworks 数据平台 (HDP v3.x) 迁移到 Cloudera 数据平台 (CDP) 7.1 版的一部分,我们正在测试我们的 Hadoop 应用程序。在测试时,我们在尝试创建托管 Hive 表时发现了以下问题。请就可能的解决方案提出建议。谢谢!

错误:编译语句时出错:失败:执行错误,从 org.apache.hadoop.hive.ql.ddl.DDLTask 返回代码 40000。 MetaException(消息:托管表的位置应位于托管仓库根目录或其数据库的 managedLocationUri 内。表 MANAGED_TBL_A 的位置无效:hdfs://cluster/prj/Warehouse/Secure/APP/ managed_tbl_a,托管仓库:hdfs://cluster/warehouse/tablespace/managed/hive) (state=08S01,code=40000)

DDL 脚本

create table if not exists MANAGED_TBL_A
(
   name string,id varchar(20),created_on TIMESTAMP,created_by VARCHAR(10)
)
partitioned by (partition_date varchar(20))
clustered by (id) into 5 buckets
stored as orc
location '/prj/Warehouse/Secure/APP/managed_tbl_a'
tblproperties ('compactorthreshold.hive.compactor.delta.num.threshold'='1','compactorthreshold.hive.compactor.delta.pct.threshold'='0.5','transactional'='true','orc.create.index'='true','orc.compress.size'='8192');

解决方法

hive.metastore.warehouse.dir - 是仓库根目录。

创建数据库时,指定 MANAGEDLOCATION - 托管表的位置根目录和 LOCATION - 外部表的根目录。

MANAGEDLOCATIONhive.metastore.warehouse.dir

metastore.warehouse.tenant.colocation 属性设置为 true 允许托管表 (MANAGEDLOCATION) 位于仓库根目录之外的公共位置,从而为设置配额和其他策略提供基于租户的公共根。

在本手册中查看更多详细信息:Hive managed location