• 基于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 '	' 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;


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


  • 相关阅读:
    前端性能优化-全链路质量监控体系建设
    前端性能优化-研发开发流程优化
    一次VLAN标签引发的网络事件的处置
    2001
    SpringBoot定时任务
    在el-dialog中使用ref找不到元素?
    el-table使用checkbox时,获取选中数据的id?
    SpringBoot邮件发送
    表单中el-select和el-input的长度不一致?
    element-ui如何修改el-dialog的样式?
  • 原文地址:https://www.cnblogs.com/Sebastian-Wang/p/6047068.html
Copyright © 2020-2023  润新知