sql server—为什么配置单元不支持存储过程?

thtygnil  于 2021-06-04  发布在  Hadoop
关注(0)|答案(5)|浏览(415)

为什么配置单元不支持存储过程?如果它不支持,那么我们将如何处理配置单元中的sp?有其他解决办法吗(因为我们已经有了一个数据库(mssql中有数据库),那么hbase呢?是否支持sp?

sulc1iza

sulc1iza1#

配置单元和hbase不支持存储过程。不过,hive计划在未来支持sp(hive-3087)。hbase没有支持sp的计划,因为它只关注存储,更像nosql。
hiveudf可以实现存储过程的一些功能,但这还不够。

0s7z1bwu

0s7z1bwu2#

请参考hpl/sql,我正在寻找相同的解决方案,但还没有尝试。
我相信数据仓库应用程序需要存储过程支持,但是更喜欢基于集合的过程而不是基于行的过程。
以我个人的经验,在结构化数据仓库应用程序中使用服务器端程序模板时,需要过程支持。它使数据仓库应用程序更容易在sql/nosql之间移植,如netezza、mssql、oracle、db2和biginsight。

1cosmwyk

1cosmwyk3#

首先,hadoop或hive是 NOT sql数据库的替代方案。您决不能认为这两种方法中的任何一种可以替代rdbms。
hive的开发只是为了在现有hadoop集群的基础上提供仓库功能,同时考虑到大量的sql用户,包括Maven数据库设计者和管理员,以及使用sql从数据仓库提取信息的临时用户。尽管它提供了一个类似sql的接口,但它不是sqldb。hive最适合于数据仓库应用程序,在这种应用程序中分析相对静态的数据,不需要快速的响应时间,并且数据变化不快。简单地说 offline batch processing 差不多吧。
hbase中没有什么比存储过程更好的了。但是他们有一种叫做 Coprocessor 它类似于rdbms中的存储过程。有关协处理器的更多信息,请访问此处。
正如@zsxwing所说的,sqoop只是一个数据迁移工具,仅此而已。一旦您切换到nosql世界,您就需要灵活,并且需要遵守nosql规则。
如果您能详细说明一下您的用例,也许我们可以更好地帮助您。
针对您的评论:
是的,facebook广泛使用hadoop、hive和其他相关工具。事实上,hive是在facebook上开发的。但不止这些。无论他们在哪里有oltp和完整的事务需求,他们仍然依赖于rdbms。一个例子是他们的 Timeline 功能,它使用mysql。他们有一个巨大的(令人敬畏的)管道,它由很多东西组成,而不仅仅是hadoop和hive。见下图。

vbkedwbf

vbkedwbf4#

配置单元没有存储过程

hive确实没有任何存储过程,如现有答案中所述。但是,有两个缓解因素:

Hive有视图

当然,它不是存储过程的适当替代品,但是通过巧妙地使用视图,您也许可以消除对某些过程的需要。

您可以从另一个程序调用配置单元

上一次我遇到hive没有存储过程的问题时,我意识到我想做的事情(循环所有列)是我也可以在另一个程序中做的事情。因此,我遵循以下工作流程:
运行查询以获取相关(元数据):python调用hive以获取列名
使用这些信息构建查询:python接收所有列名并构建相应的select语句
运行结果查询:python使用 hive -e 如果需要,也可以转到2
通过视图和外部调用,到目前为止,我已经能够解决存储过程不足的问题。

mpgws1up

mpgws1up5#

请看下面的开源项目pl/hqlhttp://www.plhql.org. 它允许您在hive中运行现有的sql server、oracle、teradata、mysql等存储过程。

相关问题