前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hive通过JDBC连接HiveServer

Hive通过JDBC连接HiveServer

作者头像
kongxx
发布2018-05-14 14:09:22
1.7K1
发布2018-05-14 14:09:22
举报

修改 hadoop 配置

首先需要修改hadoop的配置文件etc/hadoop/core-site.xml,添加如下配置项,其中 <user> 为连接用户,根据具体用户替换。

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    。。。
    <property>
        <name>hadoop.proxyuser.<user>.hosts</name> 
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.<user>.groups</name>
        <value>*</value>
    </property>
</configuration>

修改配置后需要重启hadoop集群

代码语言:javascript
复制
$ sbin/stop-dfs.sh
$ sbin/start-dfs.sh

启动 hiveserver2 服务

使用下面的命令启动,默认端口为10000.

代码语言:javascript
复制
$ bin/hive --service hiveserver2

JDBC测试

这里假定使用的是maven创建的Java工程,添加下面的依赖库

代码语言:javascript
复制
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>3.0.0</version>
        </dependency>

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

下面是一个测试代码,可根据自己情况修改其中的连接信息,比如url,username和passworkd。

代码语言:javascript
复制
package my.hivestudy;

import java.sql.*;

public class JDBCExample {
    public static void main(String[] args) throws Exception {
        Class.forName("org.apache.hive.jdbc.HiveDriver");
        Connection conn = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "admin", "admin");

        createTable(conn);
        insertTable(conn);
        queryTable(conn);

        conn.close();
    }

    private static void createTable(Connection conn) throws Exception {
        PreparedStatement stmt = null;

        stmt = conn.prepareStatement("drop table if exists users");
        stmt.execute();

        stmt = conn.prepareStatement("CREATE TABLE users(id int, username string, password string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','");
        stmt.execute();

        ResultSet rs = stmt.executeQuery("show tables");
        if (rs.next()) {
            System.out.println("Table:" + rs.getString(1));
        }

        stmt.close();
    }

    private static void insertTable(Connection conn) throws Exception {
        // /tmp/users.dat
        // 1,user1,password1
        // 2,user2,password2
        // 3,user3,password3
        // 4,user4,password4
        // 5,user5,password5
        PreparedStatement stmt = conn.prepareStatement("load data local inpath '/tmp/users.dat' into table users");
        stmt.executeUpdate();
        stmt.close();
    }

    private static void queryTable(Connection conn) throws Exception {
        PreparedStatement stmt = conn.prepareStatement("select * from users");
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            System.out.println("id: " + rs.getString(1));
            System.out.println("username: " + rs.getString(2));
            System.out.println("password: " + rs.getString(3));

        }
        stmt.close();
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 修改 hadoop 配置
  • 启动 hiveserver2 服务
  • JDBC测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档