在 Hive 中执行 SQL 过程

Posted

技术标签:

【中文标题】在 Hive 中执行 SQL 过程【英文标题】:Execute SQL Procedures in Hive 【发布时间】:2017-12-22 21:03:07 【问题描述】:

​你好,

以下是我们的场景,请提出可能的解决方案,

我们有一个现有的报告解决方案 (SAP) 在 RDBMS 中执行一个过程(使用 JDBC 连接)以根据用户输入生成报告。

现在我们计划从 RDBMS 转移到 hive 作为我们的数据源。

有没有办法使用 JDBC 连接连接到 hive 并执行一个过程(HPLSQL 或 UDF 执行 Oracle 过程的等效工作)?

或者有没有其他方法可以使用 jdbc 在 hive 或 spark 中运行过程或程序? 谢谢

【问题讨论】:

【参考方案1】:

可以使用 JDBC 连接到 Hive

https://cwiki.apache.org/confluence/display/Hive/HiveClient#HiveClient-JDBC

但是,如果您的集群是安全的,您将需要连接到 HiveServer2

https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-JDBC

此外,Hive 从 2.0.0 版本开始支持存储过程

https://issues.apache.org/jira/browse/HIVE-11055

【讨论】:

感谢 hlagos 的回复。是否可以使用 jdbc 触发 HPL/SQL 过程并返回视图。类似于我们在 Oracle 中触发返回临时视图的过程。 不确定返回视图是什么意思,但您应该能够从存储过程中获取一组记录。

以上是关于在 Hive 中执行 SQL 过程的主要内容,如果未能解决你的问题,请参考以下文章

Hive SQL底层执行过程详细剖析

Hive SQL的底层编译过程详解

数据迁移过程中hive sql调优

Hive SQL的编译过程

源码级解读如何解决Spark-sql读取hive分区表执行效率低问题

Hive将SQL转化为MapReduce的过程