Hive JDBC

Hive是一个基于Hadoop的数据仓库架构,使用SQL语句读、写和管理大型分布式数据集。Hive可以将SQL语句转化为MapReduce(或Apache Spark和Apache Tez)任务执行,大大降低了Hadoop的使用门槛,减少了开发MapReduce程序的时间成本。

可以将Hive理解为一个客户端工具,其提供了一种类SQL查询语言,称为HiveQL。这使得Hive十分适合数据仓库的统计分析,能够轻松使用HiveQL开启数据仓库任务,如提取/转换/加载(ETL)、分析报告和数据分析。Hive不仅可以分析HDFS文件系统中的数据也可以分析其他存储系统,例如HBase。

 

通过编写JDBC程序访问Hive中的数据

1. 修改用户权限

使用JDBC或Beeline CLI连接Hive都需要在Hadoop中为Hive开通代理用户访问权限。修改Hadoop配置文件core-site.xml,添加以下配置内容:

<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

2. 启动HiveServer 2服务

使用JDBC或Beeline CLI访问Hive都需要先启动HiveServer 2服务,命令如下:

cd /opt/modules/apache-hive-2.3.9-bin
bin/hive --service hiveserver2 &

http://centos01:10002

3. Java项目依赖包

<dependency>
    <groupId>org.apache.hive</groupId>
    <artifactId>hive-jdbc</artifactId>
    <version>2.3.9</version>
</dependency>

4. 编写JDBC程序

Hive JDBC程序的编写与其他数据库(MySQL、Oracle等)类似

public class HiveJDBCTest {

    public static void main(String[] args) throws Exception {
        //驱动名称
        String driver = "org.apache.hive.jdbc.HiveDriver";
        //连接地址,默认使用端口10000, 使用默认数据库
        String url = "jdbc:hive2://centos01:10000/test_db";
        //用户名(Hadoop集群的登录用户)
        String username = "root";
        //密码(默认为空)
        String password = "";
        //1.加载JDBC驱动
        Class.forName(driver);
        //2.获取连接
        Connection conn = DriverManager.getConnection(url, username, password);
        Statement stmt = conn.createStatement();
        //3.执行查询
        ResultSet res = stmt.executeQuery("select * from student");
        //4.处理结果
        while (res.next()) {
            System.out.println(res.getInt(1) + "\t" + res.getString(2));
        }
        //5.关闭资源
        res.close();
        stmt.close();
        conn.close();
    }

}

  

书籍: Hadoop大数据技术开发实战 9.13 Hive JDBC操作

https://gitee.com/caoyeoo0/xc-springboot/blob/hadoopApi/src/main/java/com/xc/xcspringboot/test/HiveJDBCTest.java

 

posted @ 2022-11-11 15:19  草木物语  阅读(170)  评论(0编辑  收藏  举报