基於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;


這里寫圖片描述
這里寫圖片描述



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM