之前在學(xué)習(xí)hive時(shí)办悟,一直是通過命令行進(jìn)行相關(guān)操作尘奏,但是,稍稍有些不方便病蛉,因此就想著學(xué)習(xí)通過Java直接訪問Hive數(shù)據(jù)庫炫加,特此寫了這篇文章,記錄一下铺然,方便今后查閱和復(fù)習(xí)俗孝。
一、 配置文件
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
<description>TCP 的監(jiān)聽端口魄健,默認(rèn)為10000赋铝。 Port number of HiveServer2 Thrift interface.
Can be overridden by setting $HIVE_SERVER2_THRIFT_PORT</description>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>0.0.0.0</value>
<description>host設(shè)置成0.0.0.0,來接收未知來源的ip
Bind host on which to run the HiveServer2 Thrift interface.
Can be overridden by setting $HIVE_SERVER2_THRIFT_BIND_HOST
</description>
</property>
二沽瘦、 啟動(dòng)服務(wù)
./bin/hive --service metastore &
./bin/hive --service hiveserver2 &
三革骨、 添加maven依賴
Note:我是用的是cloudera :cdh5.14.0版本,大家在參考時(shí)析恋,請(qǐng)根據(jù)自己實(shí)際使用情況進(jìn)行相關(guān)更改<version>xxx</version>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0-cdh5.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.0-cdh5.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-jobclient</artifactId>
<version>2.6.0-cdh5.14.0</version>
</dependency>
<!-- hive -->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.1.0-cdh5.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.1.0-cdh5.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-cli</artifactId>
<version>1.1.0-cdh5.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-common</artifactId>
<version>1.1.0-cdh5.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-metastore</artifactId>
<version>1.1.0-cdh5.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-service</artifactId>
<version>1.1.0-cdh5.14.0</version>
</dependency>
</dependencies>
四良哲、 Java連接Hive創(chuàng)建數(shù)據(jù)庫
package hive;
import java.sql.*;
public class HiveCreateDb {
// 下面是使用hiveserver進(jìn)行連接
// private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
// https://cwiki.apache.org/confluence/display/Hive/HiveClient#HiveClient-JDBC
// 本例是使用hiveserver2進(jìn)行連接,若果想能過hiveserver進(jìn)行連接助隧,請(qǐng)自行查閱官方文檔進(jìn)行實(shí)現(xiàn)
// https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-JDBC
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException, ClassNotFoundException {
// Register driver and create driver instance
Class.forName(driverName);
// get connection
Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "hive", "hive");
Statement stmt = con.createStatement();
boolean execute = stmt.execute("create database if not exists db_hive");
System.out.println("Database userdb created successfully.");
con.close();
}
}