更新时间:2025-08-01 GMT+08:00
配置创建Hive内部表时不能指定Location
操作场景
创建Hive表时,支持指定表的Location为HDFS或OBS目录(存算分离场景),如果需要实现创建Hive内部表时,不支持指定Location,可通过配置“hive.internaltable.notallowlocation”参数进行控制。即表创建成功之后,表的Location路径会被创建在当前默认warehouse目录下(默认warehouse目录为“/user/hive/warehouse”),不能被指定到其他目录;如果创建内部表时指定Location,则创建表会失败。

开启该功能后,如果数据库中已存在建表时指向非当前默认warehouse目录的表,在执行创建数据库、表脚本迁移、重建元数据操作时需要特别注意,防止报错。
操作步骤
- 登录FusionInsight Manager页面,选择“集群 > 服务 > Hive > 配置 > 全部配置”。
- 选择“HiveServer(角色) > 自定义”,对参数文件“hive-site.xml”添加自定义参数,设置“名称”为“hive.internaltable.notallowlocation”,参数取值包括:
- true:创建Hive内部表时不支持指定表的Location。
- false:默认值,创建Hive内部表时支持指定表的Location。
需将参数值设置为“true”。
- 单击“保存”保存配置。单击“实例”,勾选所有Hive实例,选择“更多 > 重启实例”,输入当前用户密码,单击“确定”重启所有Hive实例。
- 是否需要在Spark/Spark2x客户端中启用此功能?
- 是,重新下载并安装Spark/Spark2x客户端。
- 否,操作结束。
- 以客户端安装用户登录安装客户端的节点。
下载并安装集群客户端的具体操作,请参考安装MRS集群客户端。
- 执行以下命令配置环境变量并认证用户。
切换至客户端安装目录:
cd 客户端安装目录
加载环境变量:
source bigdata_env
认证用户,未开启Kerberos认证的集群请跳过该步骤:
kinit Hive业务用户
- 执行以下命令登录Hive客户端:
beeline
- 创建Hive内部表。
如果创建Hive内部表时指定表的Location,例如为HDFS的“/user/test”,命令为:
create table test(name string) location "user/test";
命令执行后报错,创建表失败,即表示创建Hive内部表时不能指定Location配置成功:
请删除命令中的location参数并重新执行即可创建对应的Hive表。
父主题: Hive企业级能力增强