Java程式碼通過JDBC連線Hiveserver2
我們可以通過CLI、Client、Web UI等Hive提供的使用者介面來和Hive通訊,但這三種方式最常用的是CLI;Client 是Hive的客戶端,使用者連線至 Hive Server。在啟動 Client 模式的時候,需要指出Hive Server所在節點,並且在該節點啟動 Hive Server。 WUI 是通過瀏覽器訪問 Hive。今天我們來談談怎麼通過HiveServer來操作Hive。
在$HIVE_HOME/conf目錄下,新建一個hive-site.xml,配置Hive元資料的儲存方式(我用的是mysql儲存)注意下面配置的是hive預設的是mysql的hive資料庫,使用者名稱是hive,密碼是hive。所以在進行下列操作前要用root登入mysql建立hive資料庫並且分配給使用者hive。<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hive.metastore.local</name> <value>true</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> </property> <property> <name>datanucleus.fixedDatastore</name> <value>false</value> </property> </configuration>
Hive提供了jdbc驅動,使得我們可以用Java程式碼來連線Hive並進行一些類關係型資料庫的sql語句查詢等操作。同關係型資料庫一樣,我們也需要將Hive的服務開啟;在Hive 0.11.0版本之前,只有HiveServer服務可用,你得在程式操作Hive之前,必須在Hive安裝的伺服器上開啟HiveServer服務,如下:
[[email protected] /home/q/hive-0.11.0]$ bin/hive --service hiveserver -p 10002
Starting Hive Thrift Server
上面代表你已經成功的在埠為10002(預設的埠是10000)啟動了hiveserver服務。這時候,你就可以通過Java程式碼來連線hiveserver,程式碼如下:
package com.wyp;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveJdbcTest {
private static String driverName =
"org.apache.hadoop.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.exit(1);
}
Connection con = DriverManager.getConnection(
"jdbc:hive://localhost:10002/default", "wyp", "");
Statement stmt = con.createStatement();
String tableName = "wyphao";
stmt.execute("drop table if exists " + tableName);
stmt.execute("create table " + tableName +
" (key int, value string)");
System.out.println("Create table success!");
// show tables
String sql = "show tables '" + tableName + "'";
System.out.println("Running: " + sql);
ResultSet res = stmt.executeQuery(sql);
if (res.next()) {
System.out.println(res.getString(1));
}
// describe table
sql = "describe " + tableName;
System.out.println("Running: " + sql);
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(res.getString(1) + "\t" + res.getString(2));
}
sql = "select * from " + tableName;
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(String.valueOf(res.getInt(1)) + "\t"
+ res.getString(2));
}
sql = "select count(1) from " + tableName;
System.out.println("Running: " + sql);
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(res.getString(1));
}
}
}
編譯上面的程式碼,之後就可以執行(我是在整合開發環境下面執行這個程式的),結果如下:
Create table success!
Running: show tables 'wyphao'
wyphao
Running: describe wyphao
key int
value string
Running: select count(1) from wyphao
0
Process finished with exit code 0
如果你想在腳本里面執行,請將上面的程式打包成jar檔案,並將上面的依賴庫放在/home/wyp/lib/(這個根據你自己的情況弄)中,同時加入到執行的環境變數,指令碼如下:
#!/bin/bash
HADOOP_HOME=/home/q/hadoop-2.2.0
HIVE_HOME=/home/q/hive-0.11.0-bin
CLASSPATH=$CLASSPATH:
for i in /home/wyp/lib/*.jar ; do
CLASSPATH=$CLASSPATH:$i
done
echo $CLASSPATH
/home/q/java/jdk1.6.0_20/bin/java -cp \
$CLASSPATH:/export1/tmp/yangping.wu/OutputText.jar com.wyp.HiveJdbcTest
上面是用Java連線HiveServer,而HiveServer本身存在很多問題(比如:安全性、併發性等);針對這些問題,Hive0.11.0版本提供了一個全新的服務:HiveServer2,這個很好的解決HiveServer存在的安全性、併發性等問題。這個服務啟動程式在${HIVE_HOME}/bin/hiveserver2裡面,你可以通過下面的方式來啟動HiveServer2服務:
$HIVE_HOME/bin/hiveserver2
也可以通過下面的方式啟動HiveServer2
$HIVE_HOME/bin/hive --service hiveserver2
兩種方式效果都一樣的。但是以前的程式需要修改兩個地方,如下所示:
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
改為
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
Connection con = DriverManager.getConnection(
"jdbc:hive://localhost:10002/default", "wyp", "");
改為
Connection con = DriverManager.getConnection(
"jdbc:hive2://localhost:10002/default", "wyp", "");
其他的不變就可以了。
這裡順便說說本程式所依賴的jar包,一共有以下幾個:
hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar
$HIVE_HOME/lib/hive-exec-0.11.0.jar
$HIVE_HOME/lib/hive-jdbc-0.11.0.jar
$HIVE_HOME/lib/hive-metastore-0.11.0.jar
$HIVE_HOME/lib/hive-service-0.11.0.jar
$HIVE_HOME/lib/libfb303-0.9.0.jar
$HIVE_HOME/lib/commons-logging-1.0.4.jar
$HIVE_HOME/lib/slf4j-api-1.6.1.jar
如果你是用Maven,加入以下依賴
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>0.11.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.2.0</version>
</dependency>
相關推薦
Java程式碼通過JDBC連線Hiveserver2
我們可以通過CLI、Client、Web UI等Hive提供的使用者介面來和Hive通訊,但這三種方式最常用的是CLI;Client 是Hive的客戶端,使用者連線至 Hive Server。在啟動 Client 模式的時候,需要指出Hive Server所在節點,並且在該節點啟動 Hive Se
Hive:用Java程式碼通過JDBC連線Hiveserver
寫在前面的話,學Hive這麼久了,發現目前國內還沒有一本完整的介紹Hive的書籍,而且網際網路上面的資料很亂,於是我決定寫一些關於《》序列文章,分享給大家。我會在接下來的時間整理有關Hive的資料,如果對Hive的東西感興趣,請關注本部落格。 我們可以通過CLI、Cli
用Java程式碼通過JDBC連線Hiveserver
我們可以通過CLI、Client、Web UI等Hive提供的方式來和Hive通訊,但這三種方式中最常用的是CLI;Client是Hive的客戶端,使用者連線至Hive Server。在啟動Client模式的時候,需要指出Hive Server所在的節點,並且在該節點啟動H
Java程式通過JDBC連線遠端資料庫MySQL
程式碼如下: import java.sql.*; public class jdbc { @SuppressWarnings("unused") public static void main
java程式碼實現JDBC連線MySql以及引用驅動程式包
JDBC連結MySql JDBC連結MySql的話題已經老掉牙了,這次我只想通過使用簡潔的程式碼實現,採用封裝的思想,將連結MySql的程式碼封裝在類的靜態方法中,供一次性呼叫返回java.sq
【Java 資料庫】java工程通過JDBC連線到資料庫
(在原博文上有改動) 下面請一字一句地看,一遍就設定成功,比你設定幾十遍失敗,費時會少得多。 首先,在連線資料庫之前必須保證SQL Server 2012是採用SQL Server身份驗證方式而不是windows身份驗證方式。如果在安裝時選用了後者,則重新設定如下:
Java 通過JDBC連線並操作Mysql資料庫
使用Java連線資料庫需要使用JDBC驅動。JDBC(Java Data Base Connectivity,java資料庫連線)是一種用於執行SQL語句的Java API,可以為多種關係資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。以下是使用方
完整java開發中JDBC連線資料庫程式碼和步驟
宣告:來自Hongten(部落格園) JDBC連線資料庫 建立一個以JDBC連線資料庫的程式,包含7個步驟: 1、載入JDBC驅動程式: 在連線資料庫之前,首先要載入想要連線的資料庫的驅動到JVM(Java虛擬機器), 這通過java.lang
hadoop元件---資料倉庫(五)---通過JDBC連線hive的thrift或者hiveserver2
我們在上一篇文章中已經學習了Hive的常用命令,但是如果使用其他的語言如何跟Hive進行互動呢。 Thrift簡介 Hive擁有HiveServer(Thrift)或者Hiveserver2元件,提供了JDBC驅動服務,使得我們可以用Java程式碼或者Pyt
jsp/java程式碼中用jdbc驅動代替jdbc-odbc橋連線SQL Server資料庫
甲骨文公司主要技術人員、JDBC規範領導者Lance Andersen在部落格中稱,從Java SE 8起,JDK中將不再包含JDBC-ODBC橋。 JDBC-ODBC橋是Java提供的一種基於兩層模型的JDBC技術,使用JDBC-ODBC橋能對多種ODBC
java通過JDBC連線資料庫及增刪改查操作
1.實戰資料庫資料的準備 建立資料庫(newsmanager),然後建立表news(id,title,content,type)和newstype(id,name),其中news的type和newstype的id為主外來鍵關係,如下圖圖 2.JDBC的介紹
Java 通過JDBC連線Mysql資料庫的方法和例項
之前有兩篇文章講了安裝mysql(ubuntu和windows)和視覺化工具workbench的使用,這篇文章就講一下java程式是如何連線MySQL資料庫的。 Java是通過JDBC連線Mysql資料庫的。JDBC(Java Data Base Connectivi
Java通過JDBC連線資料庫的三種方式!!!並對資料庫實現增刪改查
前言 java連線資料庫完整流程為: 1,獲得驅動(driver),資料庫連線(url),使用者名稱(username),密碼(password)基本資訊的三種方式。 2,通過獲得的資訊完成JDBC實現連線資料庫。 注:連線前請匯入jar包,例:連線my
java本地使用JDBC連線Spark SQL(HiveServer2)
根據Spark官網所述,Spark SQL實現了Thrift JDBC/ODBC server: The Thrift JDBC/ODBC server implemented here corresponds to the HiveServer2 in Hive 1.
Java通過JDBC連線Mysql
1. 官網下載 2. 解壓 3. 匯入驅動 1、右鍵工程,build path 2、Libraries–>Add External JARs–>選擇mysql安裝目錄下的jar包 3、此時在我們的工程下就有了
java通過jdbc連線impala和pom.xml以及增查操作
pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=
解決JAVA通過JDBC連線Oracle資料庫出現的問題
Java連線Oracle步驟: 1.註冊載入驅動 驅動名:DRIVER="oracle.jdbc.driver.OracleDriver"; Class.forName("驅動類名"); 2.獲得連線 資料庫地址: URL="jdbc:oracle:thin:@1
怎樣將IDE的eclipse編寫的java appllication通過JDBC(java database connectivity)連線上Oracle資料庫 具體步驟
public class Test { public static void main(String[] args) { /** * JDBC使用過程 * 1.匯入jdbc驅動包 jar包 oracle sqlsever mysql * 2.載入jdbc驅動 &nbs
0459-如何使用SQuirreL通過JDBC連線CDH的Hive(方式一)
Fayson的github: https://github.com/fayson/cdhproject 推薦關注微信公眾號:“Hadoop實操”,ID:gh_c4c535955d0f,或者掃描文末二維碼。 1.文章編寫目的 SQuirreL SQL Clien
Android通過jdbc連線mySQL資料庫時,資料庫拒絕連線
原因: mysql伺服器出於安全考慮,預設只允許本機使用者通過命令列登入。 解決方案: 先通過localhost登入mysql伺服器 將mysql伺服器的mysql資料庫的user表中root使用者的Host欄位改為"%"。 操作如下: window+r 輸