Hive存储过程HQL/SQL(二)– 在Hive存储过程中读写MySQL表

Java+SQL+MySQL+Hive存储过程汇总 Java+SQL+MySQL+Hive存储过程汇总 存储过程概念 ​ 在我们做一个复杂的项目时,会多次涉及到与数据库的连接,这时我们会一次次的来用SQL语句进行对数据库的连接,但如果我们这时用存储过程的话就只需要连接一次数据库就可以了,从而省去大量的SQL语句。 存储过程的优点 1、加快运行速度 ​ 对于很简单的sql,存储过程没有什么优势。对于复杂的业务逻辑,因为在存储过程创建的时候,数据库已经对齐进行了一次解析和优化。存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可 阅读详情

关键字:Hive存储过程、PL/HQL、HQL/SQL、MySQL

通过PL/HQL可以在一个脚本中同时访问多个数据库系统。在实际业务场景中,经常会有需要将Hive和RDBMS中的数据结合分析,比如:

  • 往RDBMS中写入Hive分析的审计信息;
  • 从RDBMS中获取一些维表的数据,和Hive表进行关联;
  • 从RDBMS中读取一些配置数据;
  • 往RDBMS中保存Hive的分析结果;

在PL/HQL中提供了这个功能,它允许在一个PL/HQL脚本中访问多个数据库系统。下面以一个简单需求为例:

在PL/HQL脚本中执行Hive分析任务,并将本次执行的审计信息记录到MySQL,其中,审计信息包括Hive分析任务的开始时间,结束时间和最终完成状态。

MySQL中建立审计信息表

 
  1. CREATE TABLE hive_task_log (
  2. seq INT PRIMARY KEY auto_increment,
  3. start_time VARCHAR(20),
  4. end_time VARCHAR(20),
  5. return_code INT
  6. );
  7.  

配置hplsql-site.xml

在hplsql-site.xml中的主要配置如下:

<property>

<name>hplsql.conn.default</name>

<value>hive2conn</value>

<description>The default connection profile</description>

</property>

<property>

<name>hplsql.conn.hive2conn</name>

<value>org.apache.hive.jdbc.HiveDriver;jdbc:hive2://172.16.212.17:10000/liuxiaowen;liuxiaowen;</value>

<description>HiveServer2 JDBC connection</description>

</property>

<property>

<name>hplsql.conn.mysql.conn</name>

<value>com.mysql.jdbc.Driver;jdbc:mysql://172.16.212.102:3306/test;test;test1234</value>

<description>MySQL connection</description>

</property>

 

其中,

参数hplsql.conn.default表示默认的连接器为hive2conn;

参数hplsql.conn.hive2conn表示hive2conn的具体链接串;

参数hplsql.conn.mysql.conn表示mysql的具体链接串。

 

特别注意:原始的hplsql-site.xml给出的是hplsql.conn.mysqlconn,经过测试有bug,这里的链接名称中必须包含”mysql.”,才会被正确解析成MYSQL的链接类型,否则,全被解析成HIVE,其他非Hive的数据库链接名称也是如此。

开发PL/HQL脚本

PL/HQL脚本1.sql中的内容如下:

 
  1. MAP OBJECT log TO test.hive_task_log AT mysql.conn;
  2.  
  3. DECLARE
  4. start_time VARCHAR(20);
  5. end_time VARCHAR(20);
  6. return_code INT;
  7. BEGIN
  8. start_time = SYSDATE || '';
  9. SELECT COUNT(1) FROM liuxiaowen.lxw1234;
  10. return_code = SQLCODE;
  11. end_time = SYSDATE || '';
  12. INSERT INTO log (`start_time`,`end_time`,`return_code`)
  13. VALUES(start_time,end_time,return_code);
  14. EXCEPTION WHEN OTHERS THEN
  15. return_code = SQLCODE;
  16. end_time = SYSDATE || '';
  17. INSERT INTO log (`start_time`,`end_time`,`return_code`)
  18. VALUES(start_time,end_time,return_code);
  19. DBMS_OUTPUT.PUT_LINE('SQL execute error,return code : ' || return_code);
  20. END

其中:

MAP OBJECT log TO test.hive_task_log AT mysql.conn;

这句是使用mysql.conn链接器,将test.hive_task_log表映射到log对象上,后面直接使用log即可。

SELECT COUNT(1) FROM liuxiaowen.lxw1234;

这句是执行Hive的分析任务。

return_code = SQLCODE;

这句是获取Hive分析任务的结果状态码,0表示正常,非0表示错误;

另外,在Hive分析任务开始前和结束后,使用SYSDATE获取当前时间。

使用PL/HQL的异常处理,当执行有问题时候,同样需要往审计表中记录开始和结束时间,以及返回的错误码。

执行PL/HQL并查看结果

在命令行执行hplsql -f 1.sql

hplsql

从执行的打印信息中可以看出,本次执行有两个数据库链接,第一个是链接到Hive,第二个是链接到MySQL。

在MySQL中查看表test.hive_task_log的数据:

hplsql

修改1.sql文件,使Hive的分析任务出错:

SELECT COUNT(1) FROM liuxiaowen.lxw1234.com;

再执行一遍:

hplsql

已经报错了,查看MySQL中的审计信息:

hplsql

 

遗憾的是,目前还不支持直接将Hive中的表和MySQL中的表关联起来查询,只能通过类似游标的方式去实现关联。

更多关于Hive中使用存储过程的文章,阅读《Hive存储过程系列文章》。

您可以关注 lxw的大数据田地 ,或者 加入邮件列表 ,随时接收博客更新的通知邮件。

 

 

 

如果觉得本博客对您有帮助,请 赞助作者 。

转载请注明:lxw的大数据田地 » Hive存储过程HQL/SQL(二)– 在Hive存储过程中读写MySQL表

喜欢 (4)
赏
分享 (0)
python读取mysql表,并自动在hive上建表 import pymysql import re import sys import os def get_table_info(database,table,host,user,password,db,is_partitioned): cols = [] create_head = '''create table if not exists {0}.{1}('''.fo... 阅读详情

相关推荐

Hive存储过程详解与应用

Hive 除了存储过程,还提供了用户自定义函数(UDF)来扩展功能。特性存储过程 (Stored Procedure)用户自定义函数 (UDF, UDAF, UDTF)主要功能封装复杂的业务逻辑流程,包含多条 SQL 语句扩展 Hive 的表达式功能,用于处理单行或多行数据并返回结果执行方式使用CALL语句独立调用在 SQL 查询中像内置函数一样使用 (e.g.,返回值可以没有返回值,或有多个输出参数 (OUT)通常返回一个值 (UDF), 聚合值 (UDAF) 或表 (UDTF)适用场景。

ITHomeZSL的博客 1064

hive存储过程示例

hive存储过程示例

weixin_44836843的博客 4032

Hive学习笔记

Hive内部是什么 Hive二进制分支版本核心包含3个部分。主要部分是Java代码本身。在$HIVE_HOME/lib 目录下发现有众多的jar包文件。 所有的Hive客户端都需要一个metastoreservice(元数据服务),Hive使用这个服务来存储表模式信息和其他元数据信息。通常情况下会使用一个关系型数据库中的表来存储这些信息。默认情况下,Hive会使用内置的Derby sql服务器, ...

普通Gopher 404

hive循环语句_hive存储过程

1、hive存储过程简介1.x版本的hive中没有提供类似存储过程的功能,使用Hive做数据开发时候,一般是将一段一段的HQL语句封装在Shell或者其他脚本中,然后以命令行的方式调用,完成一个业务或者一张报表的统计分析。好消息是,现在已经有了Hive存储过程的解决方案(HPL/SQL –Procedural SQL on hadoop),并且在未来的Hive的版本(2.0)中,会将该模块集成进来...

weixin_39783633的博客 4753

大数据-Hive相关知识点介绍

Hive相关知识点介绍

ziania_cumt的博客 594

Hive基础及数据仓库和数据库的区别

hive及数仓ETL的简介

qq_50215015的博客 134

Hadoop三 分布式sql计算hive入门

linux部署Hive

东风麦芽糖 1461

VS2022离线安装总闪退?可能是这个--noWeb参数没加对(完整参数指南)

本文深入解析了VS2022离线安装过程中常见的闪退问题,指出核心原因往往在于命令行参数使用不当,特别是`--noWeb`参数。文章提供了完整的参数使用指南和实战解决方案,包括证书处理、安装器文件修复及自动化脚本,帮助用户彻底解决离线部署中的验证失败与闪退难题。

weixin_28842269的博客 758

拉链表的练习题

需求:在mysql数据库中有一个人员信息表(userinfo) 数据字段如下: 在Mysql中的建表语句为: – 创建数据库 create database if not exists exam; – 创建人员表 create table if not exists exam.userinfo( user_id varchar(50), – 人员编号 phone_number varcha...

汉子一枚 2564

3张RTX 4090就能跑!BAGEL-7B多模态模型本地部署避坑指南(附Flash Attention安装技巧)

本文详细介绍了如何在3张RTX 4090显卡上本地部署BAGEL-7B多模态模型,包括硬件配置、环境设置、多卡并行优化及常见问题解决方案。特别提供了Flash Attention安装技巧和显存优化策略,帮助开发者高效运行这一开源多模态模型,实现文本与图像生成任务。

1a2s3d4f5g的博客 653

NHANES更新数据后,权重计算方式也更新了

官网说明在此:如果你比我还懒,我下载了几个说明文件。2021年8月至2023年8月的总样本量与之前的2年周期相似。然而,。特别是,与之前包括过度抽样的周期相比,非西班牙裔白人的样本量较高,而非西班牙裔黑人的样本量较低。此外,60岁及以上人群的样本量较高,而年轻群体的样本量较低。子组的估计值可能具有较低的精确度,因此,检测组间差异的统计能力可能较低。此外,年龄和种族/西班牙裔亚组(尤其是儿童和青少年年龄组)的估计值可能会显示意想不到的模式。

珏世佳人的博客 2410

数仓-HQL规范

好的开发规范是必不可少的。 1. 规范目的 养成良好的编程习惯 写出清楚、易懂、易维护的程序代码 提高代码质量与生产率 减少软件编码中的不必要的错误 2. 开发规约 所有查询必须指定具体字段 统一采用小写字母编码(不包含参数、注解),遵循SQL 92语法标准 所有查询表名必须添加数据库名+表名 HQL文件一定要设置任务名名称 HQL【会话临时表】必须要在末尾删除 别名一定要加AS关键字,多表关联必须要AS别名 字符串用单引号包括 不能使用 SQL 必须经过验证,更新数仓再执行 SQL代码中严格禁止使用硬编码

DCHAO的博客 750

CMake入门教程【基础篇】在Windows、Linux上安装CMake

CMake如何下载与安装

小鱼酱的博客 2727

Hive(一) Hive概述、三种方式搭建和区别

1 Hive 概述 1.1 Hive 简介 http://hive.apache.org/ Apache Hive 数据仓库软件方便了使用 SQL 读取、写入和管理驻留在分布式存储中的大型数据集。结构可以投影到已经存储的数据上。提供命令行工具和 JDBC 驱动程序将用户连接到 Hive。 Hive 产生的原因:非 java 编程者通过 SQL 语句对 hdfs 的数据做 mapreduce 操作。 对比项 Hive 关系型数据库

奥迪的博客 1224

uniapp - [全端兼容] 实现精美Editor富文本编辑器功能,uniApp全平台兼容的富文本插件组件用户可上传图片及对接服务器存储文件等,手机移动端H5网页富文本/小程序富文本/App富文本!

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,uniapp富文本编辑器,uniapp中如何实现各平台都兼容的富文本编辑器,Editor富文本插件,uniApp微信小程序富文本,UNI-APP安卓苹果ios系统App端富文本组件,editor富文本编辑器如何实现上传图片,图片上传后不显示怎么办,如何配置图像上传功能,富文本图片上传怎么传到服务器中,获取图片路径,editor插入图片,富文本编辑器上传图片,报错怎么办,跨域CORS处理,配置不行无效

🏆 前端领域优质创作者 1万+

AIGC 算法工程师面试八股文全解析:Diffusion Models 原理、推导与实战要点

特性 | 重参数化技巧 (Reparameterization Trick) |本质| 将随机变量的采样过程从不可导的随机操作转换为可导的确定性函数与一个已知分布的随机噪声的组合。目的。

m0_71589036的博客 404

hive olap 数据仓库_hadoop--hive数据仓库

一、hive概述Hive是基于 Hadoop 的一个【数据仓库工具】,可以将结构化的数据文件映射为一张数据库表,并提供简单的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。使用SQL来快速实现简单的MapReduce 统计,不必开发专门的MapReduce 应用,学习成本低,十分适合数据仓库的统计分析。【数据仓库】英文名称为 Data Warehouse,可简写为...

weixin_39603492的博客 270

YOLO26涨点改进 | 全网首发Conv独家改进篇 | CVPR 2025 | YOLO26引入FDConv频率动态卷积改进,含FDC3k2二次创新,小目标检测,能够捕捉更加丰富和复杂的特征信息

本文提出了一种频率动态卷积(FDConv)模块,用于改进YOLO26目标检测模型的性能。FDConv通过在傅里叶域内划分参数预算,构建具有频率多样性的权重,有效提升了模型对低频和高频信息的处理能力。该模块包含内核空间调制(KSM)和频率带调制(FBM)两个关键组件,分别实现空间级和频域级的动态调节。实验表明,FDConv仅增加3.6M参数就能超越其他需要大幅增加参数的方法,并在目标检测、实例分割等任务中表现优异。文章详细介绍了FDConv的原理、实现方法及在YOLO26中的集成方式,提供了完整的代码实现。

Ai缝合怪、助力小伙伴高效发论文 250

hive 面试题

基于Hadoop的数据仓库工具,支持类SQL(HiveQL)查询,底层转换为MapReduce/Tez/Spark任务。定位:OLAP(分析型),非OLTP(事务型)。使用列式存储(ORC/Parquet)和压缩(Snappy)。存储表结构、分区、数据位置等信息,生产环境常用MySQL。内部表:数据由Hive管理,删除表时数据连带删除。分区/分桶、ORC格式、MapJoin、压缩数据。模式:内嵌模式、本地模式、远程模式(推荐)。外部表:仅删除元数据,数据保留在HDFS。延迟 高(分钟级) 低(毫秒级)

嗨,来了,累了把,歇息一下,暂时放下一切的纷纷扰扰,享受一份自己独处的时光 603

第一节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门

vben5 快速入门。 Vben Admin 框架新出的版本V5.5.4,而之前的Vben Admin 2.x 目前已存档,仅进行重大问题修复。之前在2.x版本曾经简单完成了一版专栏文章,当时也是收获了一些好评和建议。本次决定在v5 版本基础上再完成一次前后端的搭建。希望大家继续多多支持。项目精简后,再次启动项目,执行 pnpm run dev点击登录,可以看到接口报错,现在前端请求的后端有报错,下一节处理这部分逻辑。

cuiwin的专栏 7073

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Hive2.2.1概述(待重写)

概述 hive 是一个包裹着 hdfs 的壳子,hive 通过 hql,将 sql 翻译成 MR ,进行数据查询。 Hive是⼀个构建在Hadoop之上的数据仓库 hive的数据存在hdfs上,元信息放在metastore中,metastore也放在hdfs上 和传统的数据仓库⼀样,主要⽤来访问和管理数据,同样提供了类SQL查询语⾔ 和传统数据仓库不⼀样,可以处理超⼤规模的数据,可扩展性...

weixin_30616969的博客 240

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

hadoop--hive数据仓库

一、hive概述 Hive是基于 Hadoop 的一个【数据仓库工具】,可以将结构化的数据文件映射为一张数据库表,并提供简单的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。使用SQL来快速实现简单的MapReduce 统计,不必开发专门的MapReduce 应用,学习成本低,十分适合数据仓库的统计分析。 【数据仓库】英文名称为 Da...

weixin_30881367的博客 124

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

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

0607数据库

0607数据库 数据库:数据的仓库(集散地),它解决了数据持久化和数据管理的问题。 持久化 —> 将数据从内存转移到硬盘(可以长久保存数据的存储介质)。 数据库的分类: 1972 —> Codd —> 如何使用关系模型来保存大规模数据 ~ 关系型数据库 —> 首选方案 - 理论基础:关系代数、集合论 - 具体表象:用二维表保存数据(行(记录)和列(字段)) - 编程语言:SQL(结构化查询语言) —> SQL方言 ~ 非关系型数据库 - NoSQL —> No SQL —

ashley_guo的博客 186

hive实现存储过程

1、hive存储过程简介 1.x版本的hive中没有提供类似存储过程的功能,使用Hive做数据开发时候,一般是将一段一段的HQL语句封装在Shell或者其他脚本中,然后以命令行的方式调用,完成一个业务或者一张报表的统计分析。好消息是,现在已经有了Hive存储过程的解决方案(HPL/SQL –Procedural SQL on hadoop),并且在未来的Hive的版本(2.0)中,会将该模块集成进...

Aidon博客 8363

第六章:Hive数据仓库基础知识

1.Hive系统概述2.Hive安装与配置3.Hive数据模型4.Hive HQL5.Hive 常见函数6.Hive 自定义函数7.Hive2.0存储过程:HPL/SQL实践8.Hive Index 原理及使用9.Hive Update,Delete 操作说明10.Hive ORCFile,Parquet文件格式实践11.Hive 数据压缩及解决数据倾斜问题

上一篇: 几个连接HiveServer的客户端界面工具
下一篇: Hive SQL执行计划深度解析
thy822
博客等级 码龄19年 313粉丝 294原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值