基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表

基于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的客户端配置代码段里面设置

首先在hive-site.xml的客户端配置代码段里面设置

第一个就是开启权限
第二个就是表的创建者对其创建的表,拥有所有的权限。
第三个就是权限控制配置罗



2.2要在hive-site.xml 的 HiveServer2 高级配置代码段(安全阀)添加如下配置
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 允许用户查看可用的数据库

1.创建角色

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;


这里写图片描述
这里写图片描述


posted @ 2016-11-09 15:13  Sebastian_Wang  阅读(2957)  评论(0编辑  收藏  举报