hive 建表java_基于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);

}

}

}

要执行上面的代码需要以下依赖包:

a2cb9a627ff8e46ee84b58169d340f55.png

还有一个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的客户端配置代码段里面设置

0959a78bdac8d7427c055800ddefdd5b.png

第一个就是开启权限

第二个就是表的创建者对其创建的表,拥有所有的权限。

第三个就是权限控制配置罗

2.2要在hive-site.xml 的 HiveServer2 高级配置代码段(安全阀)添加如下配置

e126446cd179aff2d81ac613042aa4f0.png

然后在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上面某位大哥的

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;

0bff0cb5805ec3d1e49924f7175d85d1.png

9b6f057969403681772345607512be25.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值