Hive工具类

public class HiveUtil {

    private static Logger logger = LoggerFactory.getLogger(HiveUtil.class);

    private static BasicDataSource basicDataSource = null;
    
    private static String HIVE_DRIVER = null;
    private static String HIVE_URL = null;
    
    static {
        HIVE_DRIVER = ConfigProperties.getInstance().getValue("hive.driver");
        HIVE_URL = ConfigProperties.getInstance().getValue("hive.url");
        
        //创建数据源对象
        if (basicDataSource == null) {
            basicDataSource = new BasicDataSource();
            //设置连接数据库的驱动
            basicDataSource.setDriverClassName(HIVE_DRIVER);
            //设置连接数据库的url
            basicDataSource.setUrl(HIVE_URL);
            //设置连接数据库的用户名
            basicDataSource.setUsername("root");
            //设置连接数据库的密码
            basicDataSource.setPassword("");
            //设置连接池启动时的初始值
            basicDataSource.setInitialSize(5);
            //设置连接池的最大值
            basicDataSource.setMaxActive(256);
            //最大空闲值.当经过一个高峰时间后,连接池可以慢慢将用不到的连接慢慢释放一部分,一直减少到maxIdle为止
            basicDataSource.setMaxIdle(20);
            //最小空闲值.当空闲的连接数少于该值时,连接池就会预申请一些连接,以避免洪峰来时再申请而造成的性能开销
            basicDataSource.setMinIdle(5);
        }
    }

    public static Connection getConnection() throws SQLException {
        return basicDataSource.getConnection();
    }

    public static Statement getStatement(Connection connection) throws SQLException {
        return connection.createStatement();
    }

    public static PreparedStatement getPreparedStatement(Connection connection, String sql) throws SQLException {
        return connection.prepareStatement(sql);
    }

    public static void switchDB(Connection connection, String database) throws SQLException {
        Statement statement = getStatement(connection);
        if (StringUtils.isNotEmpty(database)) {
            statement.execute("use " + database);
        }

    }

    public static void createTable(Connection connection, String database, String tableName, String sql) throws SQLException {
        Statement statement = getStatement(connection);
        if (StringUtils.isNotEmpty(tableName)) {
            statement.execute("drop table if exists " + tableName);
            statement.execute(sql);
        }
        close(statement);
    }

    public static void listTables(Connection connection, String database) throws SQLException {
        Statement statement = getStatement(connection);
        ResultSet resultSet = statement.executeQuery("show tables");
        while (resultSet.next()) {
            logger.info(resultSet.getString("tab_name"));
        }
        close(resultSet);
        close(statement);
    }

    public static void listTableStructure(Connection connection, String database, String tableName) throws SQLException {
        Statement statement = getStatement(connection);
        ResultSet resultSet = statement.executeQuery("describe " + tableName);
        while (resultSet.next()) {
            logger.info(resultSet.getString("col_name") + " | " + resultSet.getString("data_type") + " | "
                    + resultSet.getString("comment"));
        }
        close(resultSet);
    }

    public static void dropTable(Connection connection, String database, String tableName) throws SQLException {
        Statement statement = getStatement(connection);
        if (StringUtils.isNotEmpty(tableName)) {
            statement.execute("drop table if exists " + tableName);
        }
        close(statement);
    }

    public static void execute(Connection connection, String sql, Boolean isPrepared) throws SQLException {
        if (isPrepared) {
            PreparedStatement preparedStatement = getPreparedStatement(connection, sql);
            ResultSet resultSet = preparedStatement.executeQuery();
            close(resultSet);
            close(preparedStatement);
        } else {
            Statement statement = getStatement(connection);
            statement.execute(sql);
            close(statement);
        }
    }

    public static ResultSet list(Connection connection, PreparedStatement preparedStatement, Object[] objs) throws SQLException {
        if (ArrayUtils.isNotEmpty(objs)) {
            for (int i = 0; i < objs.length; i++) {
                preparedStatement.setObject(i, objs[i]);
            }
        }
        return preparedStatement.executeQuery();
    }

    public static void close(Connection connection) throws SQLException {
        if (connection != null) {
            connection.close();
            connection = null;
        }
    }

    public static void close(Statement statement) throws SQLException {
        if (statement != null) {
            statement.close();
            statement = null;
        }

    }

    public static void close(PreparedStatement preparedStatement) {
        if (preparedStatement != null) {
            try {
                preparedStatement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            preparedStatement = null;
        }
    }

    public static void close(ResultSet resultSet) {
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            resultSet = null;
        }

    }

}

 

hive parser工具类 hive sql 解析工具类,传入sql(支持多段sql,以";"隔开),返回map 获取表get("tables")获取sql语句 get("sqls") 立即下载

相关推荐

jdbc连接hive工具类

使用jdbc连接hive 里面提供了很多封装方法 .....................................................................

关于Java连接Hive,Spark等服务的Kerberos工具类封装

关于Java连接Hive,Spark等服务的Kerberos工具类封装

m0_46168848的博客 1628

Java通过JDBC连接Hive

压缩包中包含Java通过JDBC连接Hive所需的jar包。包含有,antlr-runtime-3.0.1.jar;commons-logging-1.0.4.jar;hadoop-core-1.2.1.jar;hive-exec-0.10.0.jar;hive-jdbc-0.13.1.jar;hive-metastore-0.9.0.jar;hive-service-0.13.1.jar;httpclient-4.2.5.jar;httpcore-4.2.4.jar;jdo2-api-2.3-ec.jar;libfb303-0.9.0.jar;libthrift-0.9.0.jar;log4j-1.2.16.jar;slf4j-api-1.6.1.jar;slf4j-log4j12-1.6.1.jar.

HiveUtil.java

【代码】HiveUtil.java。

dly的博客 418

Vue3+uniapp开发必备:5分钟搞定unplugin-auto-import自动导入配置(附常见报错解决)

本文详细介绍了在Vue3+uniapp项目中配置unplugin-auto-import插件实现自动导入的方法。通过该配置,开发者无需手动导入ref、onLoad等常用API,可显著提升编码效率和团队协作规范性。文章提供了从安装、TypeScript集成到高级用法的完整指南,并附带了常见报错的解决方案。

weixin_29008805的博客 961

【photoshop CEP插件】 OCR文字识别

一个photoshop CEP插件OCR文字识别 APP_ID = 17594920 API_KEY = puMFv72xqCYV2jdcSlXgtFvm SECRET_KEY = v5XHtqKXEm0p6ehPZrXIXrftDvocyv1m /*********************************************/ 百度OCR 密钥由Greless@qq.com 提供, 用户可自行前往https://ai.baidu.com/docs#/Auth/top 申请。 通用文字识别..

Greless的后花园 6490

JavaAPI操作Hive

JavaAPI操作Hive

weixin_45754552的博客 2247

Hive 工具类封装

package com.zzg.hive.util; import java.sql.*; import java.util.Date; import java.util.ArrayList; import java.util.List; /** * 1. 数据仓库连接 * 2. 数据库列表预览 * 3. 数据表列表预览 * 4. 数据表结构预览 * 5. 样例数据预览(抽样) * 6. 切换数据库 * */ public class HiveUtil { private Co.

zhouzhiwengang的专栏 864

Electron多窗口开发避坑指南:Pinia状态同步的3种解决方案对比

本文深入探讨了在Electron多窗口应用中实现Pinia状态同步的三种核心方案。针对Electron多窗口架构下状态隔离的挑战,文章对比了基础事件通信、共享存储以及智能Pinia插件等方案的优劣与适用场景,并提供了生产级的实现指南与选型建议,帮助开发者构建健壮高效的桌面应用。

spice的博客 479

实验六 有源滤波器

实验六 有源滤波器一、实验目的二、仪器及设备三、预习要求画出三个电路的幅频特性曲线。四、实验内容l.低通滤波电路2.高通滤波电路3.带阻滤波电路(1)实测电路中心频率。(2)以实测中心频率为中心,测出电路幅频特性。五、实验报告六,仿真图:图 1 低通滤波器仿真图图 2 高通滤波器仿真图图 3 带阻滤波电路仿真图 一、实验目的 1.熟悉有源滤波电路构成及其特性。 2.学会测量有源滤波电路幅频特性。 二、仪器及设备 1.示波器 2.信号发生器 三、预习要求 1.预习教材有关滤波电路

胡毛毛的博客 1万+

Hive工具类(kerberos认证)

总结和参考   package com.asiainfo.c3.util; import java.sql.*; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import o...

大数据指北 1816

告别WSL!实测AMD ROCm7预览版在Windows下跑ComfyUI,速度提升与避坑全记录

本文详细记录了在Windows原生环境下部署AMD ROCm7+PyTorch+ComfyUI的全流程,相比WSL环境性能显著提升。涵盖硬件兼容性确认、开发环境配置、Python环境搭建、ComfyUI部署优化及性能对比测试,为AI绘图爱好者提供实用指南。

weixin_42528090的博客 670

Hive 自定义认证工具类

Hive 自定义认证工具类 去发现同类优质开源项目:https://gitcode.com/ 概述 hiveAuth.zip 是专为解决在远程连接 Hive 客户端时,需要实现自定义用户名和密码验证场景而设计的工具类。如果您在集成或配置 Hive 以支持特定身份验证需求,尤其是在不采用默认认证机制的情况下,这个资源将非常有用。 使用场景 当您的Hive服务器要求每个客户端通过指定的用户名和密码进...

gitblog_09814的博客 749

[QMT量化交易小白入门]-九、如何用Python记录每一笔交易和调试,报错信息?

定义一个函数来获取日志记录器。: 返回全局的日志记录器,以便在其他地方调用。

木头大左的博客 2144

OpenTK简介

OpenTK 因其强大的功能、跨平台特性和灵活性,适用于多种需要图形和计算能力的应用场景,为开发者提供了丰富的可能性和创作空间。

仰望星空的博客 1980

[工具类] Hive SQL

package com.claw.util.hive; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Hql { public static S...

weixin_33825683的博客 193

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

提升Hive安全性的利器:Hive自定义认证工具类

提升Hive安全性的利器:Hive自定义认证工具类 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在数据处理和分析领域,Hive作为一个基于Hadoop的数据仓库工具,广泛应用于大规模数据集的存储和查询。然而,随着数据安全需求的不断提升,传统的认证机制可能无法满足特定场景下的安全要求。为此,我们推出了hiveAuth.zip——一个专为Hive设计的自定义认证工具类。...

gitblog_09811的博客 992

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive

第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive 第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive 一、Hive Sql语句补充 二、封装JDBC操作Hive工具类 三、HiveWebInterface - Hive的Web页面接口 HWI源码打包配置 HWI配置 HWI使用 四、...

cry970795248的博客 4231

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

spark操作hive工具类

import org.apache.spark.sql.SparkSession object HiveUtil { /** * 调大最大分区个数 * * @param spark SparkSession * @return */ def setMaxpartitions(spark: SparkSession): ...

weixin_43956381的博客 313

spark2读取oracle工具类,spark读写Oracle、hive的艰辛之路(一)

前两天工作需求,要通过给的几个Oracle的视图把数据入到hive库中,很遗憾,使用的华为云平台的集区环境中并没有sqoop1,当然也并没有sqoop2,所以,想到的解决方案是使用spark读取Oracle在写入到hive表中;1、首先,沟通了一个星期的数据库接口,是的,就是一个星期;拿到的结果为10.111.50.7:1521/DB2,当然,数据库ip和服务名是我乱写的一个,格式是这样的;还附...

weixin_39972567的博客 345

Python基于pyhive库实现hive工具类封装

【代码】Python使用pyhive操作hive工具类。

lIujunXHU的博客 1048

spring boot查询hive数据

1、引包 <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>2.3.7</version> </dependency> 注意:jar包的版本冲突问题 2、nacos添加配置信息 hive: name: hive ur...

qq_40808232的博客 1213

Hive自定义UDF函数--常用的工具类

注册函数:将自定义函数打成jar包,上传hdfs$hive&gt;create function formattime as 'com.air.udf.FormatTimeUDF' using jar 'hdfs://mycluster/user/centos/air-hive-1.0-SNAPSHOT.jar'自定义函数:1,将long型的时间片格式化成指定日期格式import org.apac...

王凯凯之猿的博客 2624
上一篇: 关于Java程序向Hive导入数据的问题解决方法
下一篇: Email Verifier Util
HogwartsRow
博客等级 码龄15年 0粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值