Hive编程指南-JDBC连接、脚本执行

Hive编程指南-JDBC连接、脚本执行本文详细介绍了如何通过 shell 和 java 代码连接 Hive 包括 Hive 的 shell 命令行 HiveServer 的配置以及使用 dbveare 工具

大家好,欢迎来到IT知识分享网。       摘要:本文主要讲了如何通过java来连接Hive,以及如何执行hive脚本

一、Hive连接

1.1、通过shell

1、hive 命令行模式,直接输入#/hive/bin/hive的执行程序,或者输入#hive –service cli

Hive编程指南-JDBC连接、脚本执行

2、 hive web界面的 (端口号9999) 启动方式

#hive –service hwi
用于通过浏览器来访问hive
http://hadoop0:9999/hwi/
3、 hive 远程服务 (端口号10000) 启动方式

#hive –service hiveserver

4、使用dbveare工具

需要将presto的jar添加进来并配置连接

Hive编程指南-JDBC连接、脚本执行

1.2 通过java代码

使用java代码来连接hive时,驱动可以选择使用jdbc,也可以选择使用presto

HiveServer使用thrift服务来为客户端提供远程连接的访问端口,在JDBC连接Hive之前必须先启动HiveServer。

hive --service hiveserver 

hiveserver默认端口是10000,可以使用hive –service hiveserver -p 10002,更改默认启动端口,此端口也是JDBC连接端口。

1、直接通过jdbc

package com.lin.bdp.common.utils; import java.lang.reflect.Field; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.lin.bdp.common.vo.Visitor; / * * 功能概要:hive客户端工具 * * @author linbingwen * @since 2016年10月20日 */ public class HiveJdbcClient { private static final Logger logger = LoggerFactory.getLogger(HiveJdbcClient.class); public static final char UNDERLINE = '_'; private static String driverName; private static String url; private static String user; private static String password; private static class LazyHolder { private static final HiveJdbcClient INSTANCE = new HiveJdbcClient(); } public static final HiveJdbcClient getInstance() { return LazyHolder.INSTANCE; } / * 初始化参数 * @author linbingwen * @since 2016年10月20日 */ private void init() { driverName = ConfigLoader.getProperty("hive.jdbc.driverName"); url = ConfigLoader.getProperty("hive.jdbc.url"); user = ConfigLoader.getProperty("hive.jdbc.user"); password = ConfigLoader.getProperty("hive.jdbc.password"); } private void initPresto() { driverName ="com.facebook.presto.jdbc.PrestoDriver"; url = "jdbc:presto://10.78.104.5:8080/hive/ods_uba"; user = "presto"; password = "Admin@123"; } private HiveJdbcClient() { init(); } / * 获取连接 * @author linbingwen * @since 2016年10月20日 * @return * @throws ClassNotFoundException * @throws SQLException */ private Connection getConnection() throws ClassNotFoundException, SQLException { Class.forName(driverName); Connection conn = DriverManager.getConnection(url, user, password); return conn; } / * 按条件查找 * @author linbingwen * @since 2016年10月20日 * @param clazz * @param sql * @return * @throws Exception */ public <T> List<T> find(Class<T> clazz, String sql) throws Exception { if (sql == null || sql.length() == 0) { logger.warn("查询sql语句不能为空"); return new ArrayList<T>(); } Connection connection = null; PreparedStatement preState = null; ResultSet rs = null; try { connection = getConnection(); Statement stmt = connection.createStatement(); rs = stmt.executeQuery(sql); return (List<T>) handler(clazz, rs); } catch (Exception e) { logger.error("sql = {}执行出错,Exception = {}", sql, e.getLocalizedMessage()); throw e; } finally { release(connection,preState,rs); } } / * 释放资源 * * @author linbingwen * 







免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137105.html

(0)
上一篇 2025-06-22 21:26
下一篇 2025-06-22 21:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信