hive hook
来源:互联网 发布:windows系统备份 编辑:程序博客网 时间:2024/05/01 10:16
hive-site.xml中可以指定添加hook,类似于过滤器之类的,可以用来拦截一些行为
<property>
<name>hive.semantic.analyzer.hook</name>
<value>自定义的类</value>
<description></description>
</property>
hive 默认的default authorization有漏洞,任何用户都可以创建role并授权,可以org.apache.hadoop.hive.ql.parse.AbstractSemanticAnalyzerHook类重写preAnalyze()方法来实现。
HiveParser类,是一个常量类,用来定义hive中的所有动作,比如创建数据库,建表,建role,建索引等等。比如:HiveParser.TOK_CREATEDATABASE 创建数据库的动作< HiveParser.TOK_ALTERTABLE 修改表的动作
SessionState方法可以获得到hive会话中信息:
SessionState.get().getLastCommand() 可以得到hive中的输入的命令
SessionState.get().getUserName() 可以得到提交hive任务的用户名,具体信息可以查看这两个类的源码。
下面这个例子中,用来限制用户执行create database,create table,alter table命令时,如果有指定location,限定必须指向/user/hive/warehouse的目录下的数据。
import org.apache.hadoop.hive.ql.parse.ASTNode;import org.apache.hadoop.hive.ql.parse.AbstractSemanticAnalyzerHook;import org.apache.hadoop.hive.ql.parse.HiveParser;import org.apache.hadoop.hive.ql.parse.HiveSemanticAnalyzerHookContext;import org.apache.hadoop.hive.ql.parse.SemanticException;import org.apache.hadoop.hive.ql.session.SessionState;public class Hive_superAdmin extends AbstractSemanticAnalyzerHook { @Override public ASTNode preAnalyze(HiveSemanticAnalyzerHookContext context, ASTNode ast) throws SemanticException { String command=SessionState.get().getLastCommand().toLowerCase(); // System.out.println(command); boolean bool = false; switch (ast.getToken().getType()) { case HiveParser.TOK_CREATEDATABASE: case HiveParser.TOK_CREATETABLE: case HiveParser.TOK_ALTERTABLE: if(command.contains("location")) if(command.contains("/user/hive/warehouse/")==false) bool=true; if(bool) throw new SemanticException("the data path must be under /user/hive/warehouse/"); break; default: break; } return ast; }}
0 0
- hive hook
- Hive Hook类型
- hook
- HOOK
- hook
- Hook
- Hook
- hook
- Hook
- Hook
- hook
- hook
- Hook
- Hook?
- hook
- hook
- hook
- hook
- MongoDB中的分组聚合在java中的用法
- LeakCanary
- Exception for Android 2 - Local path doesn't exist
- 安卓中显示密码的功能
- 仿百度文库解决方案
- hive hook
- 隆中对
- 根据汉子获取首字母
- 设计模式之单例模式
- 对称加密与非对称加密
- JS中级课程第一课(DOM概念、操作)笔记2
- hibernate深入理解-点滴记录
- tcp的关闭(shutdonw、close、SO_LINGER选项)与 连接断开情形判断
- 关于cocopads 不能正确安装的问题