更新时间:2022-12-14 GMT+08:00
        
          
          
        
      
      
      
      
      
      
      
      
  
      
      
      
        
如何在多个HiveServer之间同步删除UDF
问题
如果需要删除永久函数(Permanent UDF),如何在多个HiveServer之间同步删除?
回答
因为多个HiveServer之间共用一个MetaStore存储数据库,所以MetaStore存储数据库和HiveServer的内存之间数据同步有延迟。如果在单个HiveServer上删除永久函数,操作结果将无法同步到其他HiveServer上。
遇到如上情况,需要登录Hive客户端,连接到每个HiveServer,并分别删除永久函数。具体操作如下:
- 以Hive客户端安装用户登录安装客户端的节点。
 - 执行以下命令,切换到客户端安装目录。
    
    
cd 客户端安装目录
例如安装目录为“/opt/client”,则执行以下命令:
cd /opt/client
 - 执行以下命令配置环境变量。
    
    
source bigdata_env
 - 执行以下命令进行用户认证。
    
    
kinit Hive业务用户
 
     登录的用户需具备Hive admin权限。
 - 执行如下命令,连接指定的HiveServer。
    
    
beeline -u "jdbc:hive2://10.39.151.74:21066/default;sasl.qop=auth-conf;auth=KERBEROS;principal=hive/hadoop.<系统域名>@<系统域名>"
 
     - 10.39.151.74为HiveServer所在节点的IP地址。
 - 21066为HiveServer端口。HiveServer端口默认范围为21066~21070,用户需根据实际配置端口进行修改。
 - hive为用户名。例如,使用Hive1实例时,则使用hive1。
 - 用户可登录FusionInsight Manager,选择“系统 > 权限 > 域和互信”,查看“本端域”参数,即为当前系统域名。
 - “hive/hadoop.<系统域名>”为用户名,用户的用户名所包含的系统域名所有字母为小写。
 
 - 执行如下命令,启用Hive admin权限。
    
    
set role admin;
 - 执行如下命令,删除永久函数。
    
    
drop function function_name;
 
     - function_name为永久函数的函数名。
 - 如果永久函数是在Spark中创建的,在Spark中删除该函数后需要在HiveServer中删除,即执行上述删除命令。
 
 - 确定是否已连接所有HiveServer并删除永久函数。
    
    
- 是,操作完毕。
 - 否,执行5。
 
 
   父主题: Hive常见问题