相干常识
Hive是大数据技术簇中进行数据仓库利用的根底组件,是其它相似数据仓库利用的比照基准。根底的数据操作咱们能够通过脚本形式以Hive-client进行解决。若须要开发应用程序,则须要应用Hive的JDBC驱动进行连贯。
Hive JDBC驱动连贯分为两种,晚期的是HiveServer,最新的是HiveServer2,前者自身存在很多的问题,如安全性、并发性等,后者很好的解决了诸如安全性和并发性等问题。

零碎环境
Linux Ubuntu 20.04
OpenJDK-11.0.11
hadoop-3.2.2
mysql-8.0.25

工作内容
练习应用JDBC形式连贯Hive,通过java代码操作Hive。


工作步骤
1.首先在Linux本地,新建/data/hive6目录,用于寄存所需文件。

mkdir -p /data/hive6  

2.切换到/apps/hive/conf目录下,批改hive-site.xml文件,将以下配置写入

<property>     <name>hive.server2.thrift.port</name>     <value>10000</value>  </property>  <property>      <name>hive.server2.thrift.bind.host</name>      <value>127.0.0.1</value>      </property>  

3.切换到/apps/hadoop/sbin目录下,开启Hadoop相干过程

cd /apps/hadoop/sbin  ./start-all.sh  

4.开启mysql服务

sudo service mysql start  

5.切换到/apps/hive目录下,启动hiveserver2

cd /apps/hive        ./bin/hive --service hiveserver2 

6.另外开启一个终端模拟器,应用netstat命令查看一下10000端口

netstat -nptl | grep 10000  

7.切换到/apps/hive/bin目录下,开启beeline

cd /apps/hive/bin  ./beeline      

8.应用 (!connect jdbc:hive2://ip地址:10000 hiveuser hivepassword )测试是否能够连贯,username和password为创立的用户名(root)和明码(123456)。

!connect jdbc:hive2://127.0.0.1:10000  

9.在idea中创立一个我的项目,将hadoop中的配置文件加到resources中

10.增加maven依赖

<dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>8.0.25</version>    </dependency>    <dependency>        <groupId>org.apache.hive</groupId>        <artifactId>hive-jdbc</artifactId>        <version>2.3.8</version>    </dependency>   


package my.study.hive;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class HiveClient {    private static String driverName = "org.apache.hive.jdbc.HiveDriver";    public static void main(String args[]){        try {            Class.forName(driverName);            Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/hive", "root", "123456");            Statement st =  con.createStatement();        } catch (ClassNotFoundException e) {            e.printStackTrace();            System.exit(1);        }catch (SQLException throwables) {            throwables.printStackTrace();        }    }}