日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Hive連接方式

本文為您介紹在E-MapReduce集群提交Hive SQL的三種方式。

前提條件

已創(chuàng)建集群,且選擇了Hive服務(wù),詳情請參見創(chuàng)建集群

注意事項

本文示例中需替換的參數(shù):

  • <主節(jié)點的節(jié)點名稱>:您可以在EMR控制臺目標集群的節(jié)點管理頁面獲取,具體操作步驟請參見登錄集群

  • cluster-xxx@EMR.xxx.COM中的xxx:您可以在主節(jié)點上通過命令hostname獲取,獲取到的數(shù)字即為xxx

  • HiveServer2默認不校驗用戶名和密碼,如果您需要用戶名和密碼認證時,可以開啟LDAP認證,詳情請參見使用LDAP認證

方式一:通過Hive客戶端連接Hive

普通集群

hive

高安全集群

  1. 執(zhí)行如下命令進行認證。

  2. kinit -kt /etc/emr/hive-conf/keytab/hive.keytab hive/<主節(jié)點的節(jié)點名稱>.cluster-xxx@EMR.xxx.COM

    您也可以通過用戶管理功能創(chuàng)建用戶,在連接Beeline前使用kinit 用戶名并輸入密碼,即可通過新建用戶使用Beeline客戶端。創(chuàng)建用戶詳情請參見管理用戶

    1. 執(zhí)行如下命令進行認證。

      kinit 用戶名
    2. 根據(jù)提示輸入用戶的密碼。

  3. 連接Hive。

  4. hive

方式二:通過Beeline客戶端連接HiveServer2

普通集群

beeline -u jdbc:hive2://<主節(jié)點的節(jié)點名稱>:10000

根據(jù)您的集群類型,對應(yīng)命令如下:

  • DataLake集群

    beeline -u jdbc:hive2://master-1-1:10000
  • Hadoop集群

    beeline -u jdbc:hive2://emr-header-1:10000

高可用集群

根據(jù)您集群的類型,對應(yīng)命令如下:

  • DataLake集群

    • 設(shè)置serviceDiscoveryMode為zooKeeper的方式

      beeline -u 'jdbc:hive2://master-1-1:2181,master-1-2:2181,master-1-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2'
    • 設(shè)置serviceDiscoveryMode為multiServers的方式

      beeline -u 'jdbc:hive2://master-1-1:10000,master-1-2:10000,master-1-3:10000/default;serviceDiscoveryMode=multiServers'
  • Hadoop集群

    • 設(shè)置serviceDiscoveryMode為zooKeeper的方式

      beeline -u 'jdbc:hive2://emr-header-1:2181,emr-header-2:2181,emr-header-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2'
    • 設(shè)置serviceDiscoveryMode為multiServers的方式

      beeline -u 'jdbc:hive2://emr-header-1:10000,emr-header-2:10000,emr-header-3:10000/default;serviceDiscoveryMode=multiServers'

高安全集群

  1. 執(zhí)行如下命令進行認證。

    kinit -kt /etc/ecm/hive-conf/hive.keytab hive/<主節(jié)點的節(jié)點名稱>.cluster-xxx@EMR.xxx.COM

    您也可以通過用戶管理功能創(chuàng)建用戶,在連接Beeline前使用kinit 用戶名并輸入密碼,即可通過新建用戶使用Beeline客戶端。創(chuàng)建用戶詳情請參見管理用戶

    1. 執(zhí)行如下命令進行認證。

      kinit 用戶名
    2. 根據(jù)提示輸入用戶的密碼。

  2. 連接Beeline。

    beeline -u "jdbc:hive2://<主節(jié)點的節(jié)點名稱>:10000/;principal=hive/<主節(jié)點的節(jié)點名稱>.cluster-xxx@EMR.xxx.COM"
    說明

    jdbc鏈接串需要用雙引號括起來。

方式三:通過Java連接HiveServer2

重要

在執(zhí)行本操作前,確保您已安裝Java環(huán)境和Java編程工具,并且已配置環(huán)境變量。

  1. 在pom.xml文件中配置項目依賴(hadoop-commonhive-jdbc)。本示例新增的項目依賴如下所示。

    <dependencies>
            <dependency>
                <groupId>org.apache.hive</groupId>
                <artifactId>hive-jdbc</artifactId>
                <version>2.3.9</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-common</artifactId>
                <version>2.8.5</version>
            </dependency>
    </dependencies>
  2. 編寫代碼,連接HiveServer2并操作Hive表數(shù)據(jù)。示例代碼如下所示。

    import java.sql.*;
    
    public class App
    {
        private static String driverName = "org.apache.hive.jdbc.HiveDriver";
    
        public static void main(String[] args) throws SQLException {
    
            try {
                Class.forName(driverName);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
    
            // 1. 代碼打包后,運行JAR包的環(huán)境需要在hosts文件中把master-1-1
            //    映射到E-MapReduce集群的公網(wǎng)IP地址(或內(nèi)網(wǎng)IP地址)
            // 2. 更多JDBC連接串路徑可以參考“方式二:通過Beeline客戶端連接HiveServer2”
            Connection con = DriverManager.getConnection(
                "jdbc:hive2://master-1-1:10000", "root", "");
    
            Statement stmt = con.createStatement();
    
            String sql = "select * from sample_tbl limit 10";
            ResultSet res = stmt.executeQuery(sql);
    
            while (res.next()) {
                System.out.println(res.getString(1) + "\t" + res.getString(2));
            }
    
        }
    }
  3. 打包項目工程(即生成JAR包),并上傳JAR包至運行環(huán)境。

    重要

    JAR包的運行需要依賴hadoop-commonhive-jdbc。如果運行環(huán)境的環(huán)境變量中未包含這兩個依賴包,則您需要下載依賴包并配置環(huán)境變量,或者直接一起打包這兩個依賴包。運行JAR包時,如果缺少這兩個依賴包,則會提示以下錯誤:

    • 缺失hadoop-common:提示java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration

    • 缺失hive-jdbc:提示java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver

    本示例生成的JAR包為emr-hiveserver2-1.0.jar,上傳到E-MapReduce集群的Master節(jié)點。

  4. 測試JAR包是否可以正常運行。

    重要

    運行JAR包的服務(wù)器與E-MapReduce集群需要在同一個VPC和安全組下,并且網(wǎng)絡(luò)可達。如果兩者的VPC不同或網(wǎng)絡(luò)環(huán)境不同,則需要通過公網(wǎng)地址訪問,或先使用網(wǎng)絡(luò)產(chǎn)品打通兩者的網(wǎng)絡(luò),再通過內(nèi)網(wǎng)訪問。網(wǎng)絡(luò)連通性測試方法:

    • 公網(wǎng):telnet master-1-1的公網(wǎng)IP地址 10000

    • 內(nèi)網(wǎng):telnet master-1-1的內(nèi)網(wǎng)IP地址 10000

    java -jar emr-hiveserver2-1.0.jar