Hadoop Hive概念學習系列之hive裡的JDBC程式設計入門(二十二)
Hive與JDBC示例
在使用 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概念學習系列之hive裡的JDBC程式設計入門(二十二)
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
android之ScrollView裡巢狀ListView(都可滾動)
http://www.eoeandroid.com/thread-246995-1-1.html 其實實現原理很簡單ScrollView有一個方法requestDisallowInterceptTouchEvent(boolean);這個方法是設定是否交出ontouch許