1. 程式人生 > >Hadoop Hive概念學習系列之hive裡的JDBC程式設計入門(二十二)

Hadoop Hive概念學習系列之hive裡的JDBC程式設計入門(二十二)

HiveJDBC示例

        在使用 JDBC 開發 Hive 程式時, 必須首先開啟 Hive 的遠端服務介面。在hive安裝目錄下的bin,使用下面命令進行開啟:

    hive -service hiveserver &  //Hive低版本提供的服務是:Hiveserver
    hive --service hiveserver2 &       //Hive0.11.0以上版本提供了的服務是:Hiveserver2

  我這裡使用的Hive1.0版本,故我們使用Hiveserver2服務,下面我使用 Java 程式碼通過JDBC連線Hiveserver。

 

  18.1  測試資料

        本地目錄/home/hadoop/下的djt.txt檔案內容(每行資料之間用tab鍵隔開)如下所示:

  1        dajiangtai
  2        hadoop
  3        Hive
  4        hbase
  5        spark

    18.2  程式程式碼

  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.ResultSet;
  import java.sql.SQLException;
  import java.sql.Statement;
  public class HiveJdbcTest1 {
           private static String driverName = "org.apache.Hive.jdbc.HiveDriver";//Hive驅動名稱
           private static String url = "jdbc:Hive2://djt11:10000/default";//連線Hive2服務的連線地址,Hive0.11.0以上版本提供了一個全新的服務:HiveServer2
           private static String user = "hadoop";//對HDFS有操作許可權的使用者
           private static String password = "";//在非安全模式下,指定一個使用者執行查詢,忽略密碼
           private static String sql = "";
           private static ResultSet res;
           public static void main(String[] args) {
               try {
                   Class.forName(driverName);//載入HiveServer2驅動程式
                   Connection conn = DriverManager.getConnection(url, user, password);//根據URL連線指定的資料庫
                   Statement stmt = conn.createStatement();
                   //建立的表名
                   String tableName = "testHiveDriverTable";
                   /** 第一步:表存在就先刪除 **/
                   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);
                   // 執行“show tables”操作
                   sql = "show tables '" + tableName + "'";
                   res = stmt.executeQuery(sql);
                   if (res.next()) {
                       System.out.println(res.getString(1));
                   }
                   // 執行“describe table”操作
                   sql = "describe " + tableName;
                   res = stmt.executeQuery(sql);
                   while (res.next()) {  
                       System.out.println(res.getString(1) + "\t" + res.getString(2));
                   }
                   // 執行“load data into table”操作
                   String filepath = "/home/hadoop/djt.txt";//Hive服務所在節點的本地檔案路徑
                   sql = "load data local inpath '" + filepath + "' into table " + tableName;
                   stmt.execute(sql);
                   // 執行“select * query”操作
                   sql = "select * from " + tableName;
                   res = stmt.executeQuery(sql);
                   while (res.next()) {
                       System.out.println(res.getInt(1) + "\t" + res.getString(2));
                   }
                   // 執行“regular Hive query”操作,此查詢會轉換為MapReduce程式來處理
                   sql = "select count(*) from " + tableName;
                   res = stmt.executeQuery(sql);
                   while (res.next()) {
                       System.out.println(res.getString(1));
                   }        
                   conn.close();
                   conn = null;
               } catch (ClassNotFoundException e) {
                   e.printStackTrace();
                   System.exit(1);
               } catch (SQLException e) {
                   e.printStackTrace();
                   System.exit(1);
               }
           }
  }

     18.3  執行結果(右擊-->Run as-->Run on Hadoop)

          執行“show tables”執行結果:

        testHivedrivertable

       執行“describe table”執行結果:

      key    int
      value    string

        執行“select * query”執行結果:

      1        dajiangtai
      2        hadoop
      3        Hive
      4        hbase
      5        spark

       執行“regular Hive query”執行結果:

      5




 

相關推薦

Hadoop Hive概念學習系列hiveJDBC程式設計入門

Hive與JDBC示例         在使用 JDBC 開發 Hive 程式時, 必須首先開啟 Hive 的遠端服務介面。在hive安裝目錄下的bin,使用下面命令進行開啟:     hive -service hiveserver &  //Hive低版本提供的服務是:Hivese

FineBI學習系列FineBI的業務包分組圖文詳解

目錄 ref 反饋 技巧 HR post 一模一樣 lan 會同 不多說,直接上幹貨!   這是來自FineBI官網提供的幫助文檔 http://help.finebi.com/http://help.finebi.com/doc-view-38.htm

從 0 開始學習 Linux 系列「27.Socket 程式設計基礎TCP,UDP

Socket 介面簡介 Socket 套接字是由 BSD(加州大學伯克利分校軟體研發中心)開發的一套獨立於具體協議的網路程式設計介面,應用程式可以用這個介面進行網路通訊。要注意:Socket 不是一套通訊協議(HTTP,FTP 等是通訊協議),而是程式設計的介

Hadoop概念學習系列Hadoop、Spark學習路線很值得推薦

不多說,直接上乾貨! 說在前面的話   此筆,對於僅對於Hadoop和Spark初中學者。高手請忽略! 1 Java基礎:     視訊方面:           推薦《畢向東JAVA基礎視訊教程》。學習hadoop不需要過度的深入,java學習到

Hadoop概念學習系列Hadoop、Spark學習路線很值得推薦

   不多說,直接上乾貨! 說在前面的話   此筆,對於僅對於Hadoop和Spark初中學者。高手請忽略! 1 Java基礎:     視訊方面:          推薦《畢向東JAVA基礎視訊教程》。學習hadoop不需要過度的深入,java學習到javase,在Java虛

Microsoft Power BI Desktop概念學習系列Microsoft Power BI Desktop的下載和安裝圖文詳解

-c gpo mic sof mage pos microsoft body 技術分享   不多說,直接上幹貨!   官網 https://powerbi.microsoft.com/zh-cn/downloads/

Docker概念學習系列徹底卸載舊版本的docker

ML engine text www. 概念學習 move 實用 ali 機器學習   不多說,直接上幹貨!   最好在,安裝docker之前,先進行   卸載docker的舊版本(如果安裝過舊版本的話) [roo

Docker概念學習系列詳談Docker 的核心元件與概念5

  不多說,直接上乾貨!    見【博主】撰寫的https://mp.weixin.qq.com/s/0omuSAjF5afJBZBxhbKTqQ  想要了解Docker,就必須瞭解Docker的五大核心概念,即客戶端、守護程序或服務端、映象、容器和

Spark2.0機器學習系列10: 聚類(高斯混合模型 GMM

       在Spark2.0版本中(不是基於RDD API的MLlib),共有四種聚類方法:      (1)K-means      (2)Latent Dirichlet allocation (LDA)      (3)Bisecting k-m

機器學習系列樸素貝葉斯演算法監督學習-分類問題

''' @description :一級分類:監督學習,二級分類:分類(離散問題),三級分類:貝葉斯演算法 演算法優點: a 樸素貝葉斯模型發源於古典數學理論,有穩定的分類效率 b 對缺失的資料不太敏感,演算法也比較簡

mybatis學習筆記——mybatis的XML配置檔案全域性配置檔案

MyBatis的配置檔案包含了會深深影響MyBatis行為的設定(settings)和屬性(properties)資訊。我們詳細瞭解一下MyBatis的各種標籤的作用以及使用方法。 properties properties:配置,mybatis可以使用properties標籤來引入外部pr

併發程式設計學習筆記原子變數與非阻塞同步機制()

概述 java.util.concurrent包中的許多類,比如Semaphore和ConcurrentLinkedQueue,都提供了比使用Synchronized更好的效能和可伸縮性.這是因為它們的內部實現使用了原子變數和非阻塞的同步機制. 近年來很多關於併發演算法的研究都聚焦在非阻塞演算法(nonb

omapl138移植uboot系列新增點亮led命令第六篇

int do_led(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) {          char *cmd,*num;          static char init = 0;        

學習筆記Openlayers3】要素繪製篇第三篇

直接以專案例項來進行講解要素繪製 需求(假如): 1.實現在地圖上畫點線面功能 2.自定義其樣式 3.支援編輯功能 需要用到的openlayers3中的ol.interaction.Draw 類。這是openlayers3提供的內建互動方式,除了這

Spring系列Spring框架和SpringAOP整合過程分析()

轉載請註明出處:https://blog.csdn.net/zknxx/article/details/80808447 在這篇文章中我們接著上一篇的文章說。在上一篇文章中我們提到了getAdvicesAndAdvisorsForBean這個方法,這個方法的內

學習筆記Openlayers3】要素儲存篇第四篇

上一篇中已經講了要素的繪製功能,既然要素都繪製出來了,繪製完就應該儲存起來了吧,那麼怎麼儲存呢?這一篇就是講解怎麼儲存繪製好的要素的。 個人用到過兩種儲存要素的方法,一種是通過WFS直接儲存要素入庫,另一種是通過ajax的方法通過專案的伺服器端儲

學習筆記Openlayers3】查詢分析篇第五篇

select count(*) from "+sourceName+" where 1=1 "; String sql = "select gid as gid,fname as name,ST_AsText(geom) as geowkt from "+sourceName+" wher

Mahout機器學習平臺聚類演算法詳細剖析含例項分析

第一部分: 學習Mahout必須要知道的資料查詢技能: 學會查官方幫助文件: 解壓用於安裝檔案(mahout-distribution-0.6.tar.gz),找到如下位置,我將該檔案解壓到win7的G盤mahout資料夾下,路徑如下所示: G:\mahout\mahout

《Pro Spring》學習筆記Spring+ActiveMQ實現Queue通訊點對點

spring配置檔案: <?xml version="1.0" encoding="UTF-8"?><beans    xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="h

androidScrollView巢狀ListView都可滾動

http://www.eoeandroid.com/thread-246995-1-1.html 其實實現原理很簡單ScrollView有一個方法requestDisallowInterceptTouchEvent(boolean);這個方法是設定是否交出ontouch許