Hive 使用Jdbc连接进行连接

之前在学习hive时,一直是通过命令行进行相关操作,但是,稍稍有些不方便,因此就想着学习通过Java直接访问Hive数据库,特此写了这篇文章,记录一下,方便今后查阅和复习。

一、 配置文件

<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 的监听端口,默认为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设置成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>

二、 启动服务

./bin/hive --service metastore &
./bin/hive --service hiveserver2 &

三、 添加maven依赖

Note:我是用的是cloudera :cdh5.14.0版本,大家在参考时,请根据自己实际使用情况进行相关更改<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创建数据库

package hive;

import java.sql.*;

public class HiveCreateDb {
//    下面是使用hiveserver进行连接
//    private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
//    https://cwiki.apache.org/confluence/display/Hive/HiveClient#HiveClient-JDBC


//    本例是使用hiveserver2进行连接,若果想能过hiveserver进行连接,请自行查阅官方文档进行实现
//    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();
    }
}

    原文作者:chengruru
    原文地址: https://www.jianshu.com/p/4b188ce94cdc
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞