返回顶部
首页 > 资讯 > 精选 >Hive方便地实现存储过程是怎样的
  • 130
分享到

Hive方便地实现存储过程是怎样的

2023-06-03 16:06:40 130人浏览 泡泡鱼
摘要

Hive方便地实现存储过程是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。第一种是 HPL/sql。这种方式目前还不完善,比如游标使用限制多,很多功能无法实现,对变量

Hive方便地实现存储过程是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

第一种是 HPL/sql。这种方式目前还不完善,比如游标使用限制多,很多功能无法实现,对变量要求严格,经常发生不兼容的错误。只要可调试,代码报错并非障碍,但 HPL/SQL 的问题在于不可调试,对于开发者就很不方便。

更不方便的是,HPL/SQL 缺乏 JDBC 接口,无法方便地嵌入 JAVA 程序,只能在 JAVA 中调用命令行执行 HPL/SQL,再由 HPL/SQL 实施计算并将结果回写 Hive 临时表,最后 JAVA 通过 Hive 的 JDBC 读取临时表。

第二种是用 JAVA 开发的 UDF 间接实现。JAVA 缺乏结构化计算类库,所有的算法都要硬编码,比如最基本的二维表要用 ArrayList+HashMap 组合实现,最简单的分组汇总要写几十行,关联计算更是冗长繁琐。由于硬编码很难统一规则,所以即使相似的业务逻辑,具体算法也是千差万别,这就导致代码可读性差、维护困难。

JAVA 存储过程还存在高耦合性的问题。JAVA 类无法进行热部署,每次修改都要重新编译并重启 Hive 服务,这会对生产环境产生严重影响。如果设计一个巧妙的结构,也许能降低耦合性,但项目成本必然大幅上升。

如果使用集算器,实现 Hive 存储过程就会方便很多。

Hive方便地实现存储过程是怎样的

集算器具有丰富的结构化类库,无论查询、排序、聚合还是分组汇总、关联查询,都可以用内置函数直接实现。集算器也提供了针对结构化数据的分支判断、循环语句、动态语法,复杂业务逻辑也可轻松实现。集算器允许设置断点、跟踪调试,以便程序员快速排错。向上接口方面,集算器提供了标准的 JDBC 驱动,供 JAVA 代码调用,实际的存储过程则以脚本文件的形式存在,修改存储过程不影响 JAVA 代码或 Hive 服务。向下接口方面,集算器除了支持标准的 Hive JDBC,还提供了更高性能的私有接口,两者都可执行 HSQL 语句。

例子:Hive 中 sales 表按销售、年、月分组汇总后如下:

Hive方便地实现存储过程是怎样的

存储过程算法:调整每个销售 Q1Q2 的账务,具体是将 4 月份的 1000 元转移到 3 月份。要求对同一个销售同一年的数据做调整,如果 3 月份缺失,则调整时需在 3 月份追加 -1000 的空记录,以便平衡账务,如果 4 月份缺失,则调整时在 4 月份追加 1000 的空记录,都缺失则不做调整。

计算结果应当如下:

Hive方便地实现存储过程是怎样的

集算器存储过程如下:


ABCD
1=connect@l("hiveDB")

/connect to hive via jdbc
2=A1.cursor@x("select   sellerid,year(orderdate) y,month(orderdate) m,sum(amount)amount from   sales  group by   sellerid,year(orderdate),month(orderdate) order by sellerid,   year(orderdate),month(orderdate)")/run HSQL
3=A2.create()

/prepare a blank result
4for A2;[sellerid,y]

/batch for every year of  every seller
5
=A4.select(m==3)=A4.select(m==4)/reocrd of Mar. and Apr.
6
if B5!=[] && C5!=[]>B5.amount=B5.amount-1000/if both exist then modify batch
7

>C5.amount=C5.amount+1000
8
else if B5==[] &&C5!=[]>A3.record([A4.sellerid,A4.y,3,-1000])/if Mar. not exists then add new   reocord to result
9

>C5.amount=C5.amount+1000/modify batch
10
else if B5!=[] &&C5==[]>B5.amount=B5.amount-1000/if Apr. not exists then add new   record to result
11

>A3.record([A4.sellerid,A4.y,4,1000])/modify batch
12
>A3.paste@i(A4.(sellerid),A4.(y),A4.(m),A4.(amount))/uNIOn up this batch to result
13return A3.sort(sellerid,y,m)

/sort and return result

关于Hive方便地实现存储过程是怎样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: Hive方便地实现存储过程是怎样的

本文链接: https://lsjlt.com/news/235034.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Hive方便地实现存储过程是怎样的
    Hive方便地实现存储过程是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。第一种是 HPL/SQL。这种方式目前还不完善,比如游标使用限制多,很多功能无法实现,对变量...
    99+
    2023-06-03
  • Hive 如何方便地实现存储过程?
    更不方便的是,HPL/SQL 缺乏 JDBC 接口,无法方便地嵌入 JAVA 程序,只能在 JAVA 中调用命令行执行 HPL/SQL,再由 HPL/SQL 实施计算并将结果回写 Hive 临时表,最后 JAVA 通过 Hive 的 JDB...
    99+
    2020-10-07
    Hive 如何方便地实现存储过程?
  • Oracle存储过程是怎样的
    这篇文章主要介绍“Oracle存储过程是怎样的”,在日常操作中,相信很多人在Oracle存储过程是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle存储过程是怎样的”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-17
  • LINQ存储过程是怎样的
    这篇文章主要介绍“LINQ存储过程是怎样的”,在日常操作中,相信很多人在LINQ存储过程是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”LINQ存储过程是怎样的”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
  • mysql存储过程是怎么样的
    mysql存储过程是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。存储过程内绑定变量delimiter //drop p...
    99+
    2024-04-02
  • 创建CLR存储过程是怎样的
    今天给大家介绍一下创建CLR存储过程是怎样的。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。下面叙述了创建CLR存储过程,从理论到实践,笔者把代码做了清晰地解释...
    99+
    2023-06-17
  • LINQ to SQL存储过程是怎样的
    这篇文章主要讲解了“LINQ to SQL存储过程是怎样的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“LINQ to SQL存储过程是怎样的”吧!在我们编写程序中,往往需要一些存储过程,L...
    99+
    2023-06-17
  • MySQL存储过程的导出是怎样的
    这期内容当中小编将会给大家带来有关MySQL存储过程的导出是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 MySQL表结构数据等已经...
    99+
    2024-04-02
  • mysql存储过程具体是怎么样的
    本文主要给大家简单讲讲mysql存储过程具体是怎么样的,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql存储过程具体是怎么样的这篇文章可以给大家带来一...
    99+
    2024-04-02
  • 存储mysql函数的过程是怎么样的
    本文主要给大家介绍存储mysql函数的过程是怎么样的,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下存储mysql函数的过程是怎么样的吧。这个参数是设...
    99+
    2024-04-02
  • 基于SQL2005的CLR存储过程是怎样的
    基于SQL2005的CLR存储过程是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在 SQL Server 2005 中,可以在SQL Server实例中...
    99+
    2023-06-17
  • Oracle存储过程:判断表是否存在的实现方法
    Oracle数据库中存储过程是一种特定类型的存储过程,用于在数据库中执行一系列的SQL语句和数据操作。在实际的数据库开发工作中,有时候我们需要判断某个表是否存在于数据库中,这样可以在存...
    99+
    2024-03-08
    oracle 存储过程 表存在 sql语句
  • mysql linux环境编译存储过程是怎样的
    mysql linux环境编译存储过程是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。   &...
    99+
    2024-04-02
  • MySQL定时任务与存储过程是怎么样的
    MySQL定时任务与存储过程是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 shell 定时任务:/us...
    99+
    2024-04-02
  • SQL Server数据库中的存储过程是怎么样的
    SQL Server数据库中的存储过程是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是存储过程如果你接触过其他的编程语言,那么就...
    99+
    2024-04-02
  • mysql存储过程数据怎么实现
    今天小编给大家分享一下mysql存储过程数据怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-05-25
    mysql
  • oracle调用存储过程怎么实现
    要在Oracle数据库中调用存储过程,可以使用以下步骤: 编写存储过程:首先,在数据库中创建存储过程,可以使用PL/SQL语言编写...
    99+
    2024-03-05
    oracle
  • HTML5 本地存储中WebStorage使用以及实验是怎样的
    这期内容当中小编将会给大家带来有关HTML5 本地存储中WebStorage使用以及实验是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 ...
    99+
    2024-04-02
  • Oracle存储过程批量更新实现方法
    标题:Oracle存储过程批量更新实现方法 在Oracle数据库中,使用存储过程批量更新数据是一种常见的操作。通过批量更新可以提高数据处理的效率,减少对数据库的频繁访问,同时也能减少代...
    99+
    2024-03-08
    oracle 存储过程 批量更新 sql语句
  • MSSQL中怎么实现分页存储过程
    MSSQL中怎么实现分页存储过程,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体如下:USE [DB_Common]GOSET&n...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作