基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表出现的问题及解决
2016-10-26 10:39
816 查看
基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * Created by Sebastian on 2016/10/25. * */ public class Hive { private static String driverName = "org.apache.hive.jdbc.HiveDriver"; //驱动名称 private static String url = "jdbc:hive2://cluster1:10000/default"; //由于我的HIVE版本是hive1.1所以使用hive2 private static String user = "root"; private static String password = "root123"; private static String sql = ""; private static ResultSet res; public static void main (String[] args) { try { Class.forName(driverName); Connection conn = DriverManager.getConnection(url,user,password); Statement stmt = conn.createStatement(); //需要创建的表名 String tableName = "testHiveTable"; // 如果表存在就删除 // sql = "drop table" + tableName; // stmt.execute(sql); // 创建表 sql = "CREATE table " + tableName + " (key int, value string) row format delimited fields terminated by '\t' STORED AS TEXTFILE"; stmt.execute(sql); conn.close(); conn = null; } catch (ClassNotFoundException e) { e.printStackTrace(); System.exit(1); } catch (SQLException e) { e.printStackTrace(); System.exit(1); } } }
要执行上面的代码需要以下依赖包:
还有一个hadoop-core-1.1.1.jar
执行上面的代码会出现:
Error while compiling statement: No privilege ‘Create’ found for outputs { database:default }
根据代码提示我们就要去搞权限的问题了。
CDH5的Hive权限配置
1、默认是没有限制的,所以我们通过执行命令开启。(特意提醒:在hive里面执行。。。)
set hive.security.authorization.enabled=true;
2.Cloudera Manager中配置
2.1首先在hive-site.xml的客户端配置代码段里面设置
第二个就是表的创建者对其创建的表,拥有所有的权限。
第三个就是权限控制配置罗
2.2要在hive-site.xml 的 HiveServer2 高级配置代码段(安全阀)添加如下配置
然后在CDH里面重启过期服务。进入hive开始设置权限
权限列表:名称 | 描述 |
---|---|
ALL | 所有权限 |
ALTER | 允许修改元数据(modify metadata data of object)—表信息数据 |
UPDATE | 允许修改物理数据(modify physical data of object)—实际数据 |
CREATE | 允许进行Create操作 |
DROP | 允许进行DROP操作 |
INDEX | 允许建索引(目前还没有实现) |
LOCK | 当出现并发的使用允许用户进行LOCK和UNLOCK操作 |
SELECT | 允许用户进行SELECT操作 |
SHOW_DATABASE | 允许用户查看可用的数据库 |
create role test_role; //创建一个测试角色 create role admin;
2.给角色授权
grant all on database default to role admin; //赋予所有权限给admin这个角色 grant select on database default to role admin; //这个是例子。。。
3.给角色添加用户
grant role admin to user root;
因为我最上面的代码账号是root,要执行那段代码需要赋予权限给root
这个是CSDN上面某位大哥的
http://blog.csdn.net/wangyijie0219/article/details/46564587
1.给用户授权
基于数据库
grant select on database default to user admin;
基于某张表:
grant select on table TTT to user admin;
2.给组授权
基于数据库:
grant select on database default to group admin;
基于某张表
grant select on table TTT to group admin;
3.给角色授权
基于数据库:
grant select on database default to role admin;
基于某张表
grant select on table ppdata to role admin;
4.创建角色
create role test_role;
5.给用户添加角色
grant role test_roleto user user Sebastian;
6.给用户移除权限
基于数据库:
revoke select on database default from user Sebastian;
基于某张表
revoke select on table TTT from Sebastian;
7.查看权限
SHOW GRANT user root ON DATABASE default;
SHOW GRANT group test_role ON DATABASE default;
相关文章推荐
- 基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表
- Java 连接hive2 server 通过jdbc 出现了问题 Required field 'client_protocol' is unset! Struct:TOpenSessionReq
- 使用eclipse创建多文件java工程出现找不到或无法加载主类问题解决
- 解决java使用jdbc连接hive2出现Required field 'client_protocol' is unset! Struct:TOpenSessionReq
- 解决JAVA通过JDBC连接Oracle数据库出现的问题
- java通过JDBC驱动连接操作hive实例
- java操作数据库出现(][SQLServer 2000 Driver for JDBC]Error establishing socket.)的问题所在即解决办法
- java jdbc连接Access数据库 出现中文乱码问题解决
- java 通过jdbc驱动连接hive操作实例
- 关于eclipse中android在创建之后R.java文件出现问题的解决办法
- 关于使用CreateUserWinzard控件创建用户时出现连接数据库问题的解决方法
- 解决Java使用c3p0连接池连接mysql数据库出现MESSAGE: Software caused connection abort: socket write error的问题
- java 通过jdbc驱动连接hive操作实例
- ubuntu下面出现无法使用刚安装eclipse的插件的问题,解决办法
- java 通过jdbc驱动连接hive操作
- 出现eclipse启动不了,出现“Java was started but returned exit code=13......”的问题,下面说下,如何解决
- 使用Eclipse开发工具如何解决Java Compiler中Annotation Processin不出现的问题
- java通过jdbc连接hive1.0.0(伪分布)的问题
- java通过JDBC驱动连接操作hive实例
- Eclipse使用(四)—— 使用Eclipse创建带jar包的Java项目并使用JDBC连接数据库