更新时间:2024-07-24 GMT+08:00

配置创建Hive内部表时不能指定Location

操作场景

此功能在MRS 3.x之前版本适用于Hive,Spark。在MRS3.x及后续版本适用于Hive,Spark2x。

开启此功能后,在创建Hive内部表时,不能指定location。即表创建成功之后,表的location路径会被创建在当前默认warehouse目录下,不能被指定到其他目录。如果创建内部表时指定location,则创建失败。

开启本功能之后,创建Hive内部表不能执行location。因为对建表语句做了限制,如果数据库中已存在建表时指向非当前默认warehouse目录的表,在执行建库、表脚本迁移、重建元数据操作时需要特别注意,防止错误。

操作步骤

  1. 进入Hive服务配置页面:

    • MRS 3.x之前版本,单击集群名称,登录集群详情页面,选择“组件管理 > Hive > 服务配置”,单击“基础配置”下拉菜单,选择“全部配置”。

      若集群详情页面没有“组件管理”页签,请先完成IAM用户同步(在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM用户同步)。

    • MRS 3.x及后续版本,登录FusionInsight Manager,具体请参见访问FusionInsight Manager(MRS 3.x及之后版本)。然后选择“集群 > 待操作的集群名称 > 服务 > Hive > 配置 > 全部配置”。

  2. 选择“HiveServer(角色) > 自定义”,对参数文件“hive-site.xml”添加自定义参数,设置“名称”为“hive.internaltable.notallowlocation”,“值”为“true”,修改后重启所有Hive实例。

  3. 是否需要在Spark/Spark2x客户端中启用此功能?

    • 是,重新下载并安装Spark/Spark2x客户端。
    • 否,操作结束。