基于Sentry的UDF使用记录

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、遇到的问题

在使用Sentry管控权限的CDH平台中发现无法调用已经加载的UDF函数。

二、解决办法

1.CDH设置UDF加载文件夹,hive-site.xml 文件。

<property>
    <name>hive.reloadable.aux.jars.path</name>
    <value>/usr/lib/hive-udf-jars</value>
</property>

2.打包上传UDF文件夹。设置文件的user,group为hive用户(即hue的管理员用户)。

3.hive加载udf文件,创建永久函数。完成后可在hue中调用,也可在脚本中使用。

4.Sentry分配权限至目标用户,目标用户可直接调用函数。

小注

hive中加载UDF可以在hue中调用,CDH中加载UDF不可以在hive中调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Sentry是一个用于数据访问权限控制的Java库,它基于Apache Sentry项目,可以在Hadoop、Hive等大数据组件中实现细粒度的数据权限控制。以下是Java Sentry使用教程: 1. 安装Sentry服务器:首先需要安装Sentry服务器,可以参考官方文档进行安装。 2. 配置Sentry权限:在Sentry服务器上设置角色和权限,以控制数据的访问。 3. 集成Java Sentry:将Java Sentry库添加到项目中,并在代码中引入Java Sentry相关类和方法。 4. 配置Java Sentry:在代码中设置Java Sentry相关配置,如Sentry服务器地址、用户名、密码等。 5. 实现数据访问控制:在代码中使用Java Sentry提供的API来实现数据的访问控制,如检查用户是否具有数据访问权限、添加用户到指定角色等。 以下是一个示例代码: ```java // 设置Java Sentry配置 SentryConfig sentryConfig = new SentryConfig(); sentryConfig.setSentryServer("sentry-server:8080"); sentryConfig.setUsername("user1"); sentryConfig.setPassword("pwd1"); // 创建Java Sentry客户端 SentryClient sentryClient = SentryClientFactory.create(sentryConfig); // 检查用户是否有访问数据的权限 if (sentryClient.hasAccess("user1", "database1.table1", ActionType.SELECT)) { // 用户有访问权限,执行数据访问操作 Connection conn = DriverManager.getConnection("jdbc:hive2://hive-server:10000/default"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM database1.table1"); // 处理查询结果 } else { // 用户无访问权限,返回错误信息 throw new Exception("User does not have access to database1.table1"); } ``` 通过以上步骤,就可以使用Java Sentry实现数据访问权限控制了。需要注意的是,Java Sentry的具体使用方法和API可能会因版本而异,可以参考官方文档或示例代码进行使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值