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

matianl:SAP 最详细的权限管理解析

上文所说的系统自带权限对象与权限字段仅能满足有限的需要,其权限审核的逻辑也是系统硬编码了的,我们能做的只是是否启用某项权限对象的检查(使用SU22)。如果需要自定义,通过SU20、SU21定义即可。

matinal 當冬夜漸暖 。公众号:matinal 2155

Dia 使用说明

简述 在linux上面能找到dia这个工具还是挺幸运的,因为之前画流程图总是使用ubuntu默认的word工具 在里面画图,感觉流程图使用起来麻烦,并且视觉效果真的不好看。 自从使用Dia后,感觉至少画起来流程图会变得越来越标准了。但是Dia也存在问题,就是使用的文档很少,使用中遇到为后,查起来比较费劲,但是至少问题不是很多,所以使用中遇到的几点问题我就记下来,和大家分享,加快大家的开发和文档整理能力。 我会按照遇到的问题来说,不存在使用的先后顺序。 1. Dia 去掉背景中的线条 首先去点那个大一点的蓝色

linan101的博客 4926

JavaAPI操作Hive

JavaAPI操作Hive

weixin_45754552的博客 2247

Human3.6M 数据集介绍及下载

360 万张 3D 人体姿势和对应图像11 名专业演员(6 男 5 女)7 个场景(讨论、吸烟、拍照以及打电话等等)

XavierJ的博客 3万+

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

在 MATLAB/Simulink 中构建一个固定地面站天线指向控制系统的完整仿真模型

在卫星通信系统中,地面站天线负责与在轨卫星建立高增益、高稳定性的通信链路。对于固定地面站(如卫星测控站、深空站、VSAT主站),天线必须具备高精度指向能力,以确保波束始终对准卫星。然而,卫星(尤其是低轨卫星)在天空中快速移动,地面站天线必须实时跟踪其轨迹。此外,环境扰动(风载、热变形、机械误差)也会导致指向偏差。因此,设计一个高精度、高鲁棒性的天线指向控制系统(Antenna Pointing Control System)至关重要。本文将手把手教你如何在中构建一个固定地面站天线指向控制系统。

amy_mhd的博客 133

从零开始创建Davinci Configurator配置工程

本文介绍了从零开始搭建达芬奇工程的详细步骤。首先安装Vector的CBD包后,通过DavicCFG.exe新建空白ECU工程。文章提到Postbuild相关概念可参考往期文章《AUTOSAR配置中的PostBuild、Precompile、Linktime》,并预告下期将讲解如何通过导入DBC文件来启用AUTOSAR模块。全文以实操截图为主,步骤清晰简明,适合开发者参考备份。

Xiaowestwind的博客 219

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

【人工智能之深度学习】12. BERT微调实战:医疗文本分类的领域自适应技巧与工业级实现

摘要:医疗文本分类是自然语言处理在医疗健康领域的核心应用,可辅助疾病诊断、病历结构化和医疗质量监控。然而,医疗文本的专业术语密集、实体关系复杂及数据长尾分布等特性,导致通用BERT模型性能受限。本文系统阐述医疗文本分类的领域自适应技术,从理论原理到工业级实现展开全流程讲解。首先分析医疗文本的独特属性及技术挑战;随后详解领域继续预训练、适配器微调、对抗训练等核心技术的数学原理;构建包含数据预处理、模型优化、隐私保护的完整实战架构;通过疾病分类、情感分析、事件检测三大案例验证技术有效性。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1005

Hive 自定义认证工具类

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

gitblog_09814的博客 749

【DRAM存储器五十五】LPDDR5介绍--command bus training

本文详细介绍了LPDDR5命令总线训练(CBT)的两种模式操作流程。在启用ODT进行高频/中频操作前,必须对命令总线进行训练,包括调整VREF(CA)电压和CA/CS信号时序。两种模式的主要区别在于VREF(CA)设置方式:模式1通过MR12直接设置,模式2通过DMI[0]引脚捕获DQ[6:0]数据更新MR12。训练流程涉及频率切换、模式寄存器配置、pattern发送及结果采样等步骤,最终确定最佳VREF(CA)和时序参数。文章还分析了不同PHY实现可能存在的差异,如训练pattern生成方式和采样次数等。

highman110的博客 648

人形机器人大语言模型 pi*0.6(π*0.6):最新从经验中学习的VLA

摘要:本文介绍了一种名为Recap的机器人学习方法,通过示范训练、纠错指导和强化学习三个步骤提升机器人执行复杂任务的能力。研究显示,仅依靠模仿学习的机器人难以解决错误累积问题,而Recap方法通过价值函数可视化和优势条件策略训练,使π*0.6模型在咖啡制作、纸箱组装和衣物折叠等任务中的成功率提升超过90%,吞吐量翻倍。该方法突破了传统依赖人工演示的局限,通过自主经验学习实现机器人性能的持续优化,为未来机器人基础模型的发展提供了新方向。

2506_90492529的博客 1318

[工具类] 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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

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

gitblog_09811的博客 992

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

第十三天 - 封装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

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

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、付费专栏及课程。

余额充值