为什么hive不支持存储过程? 如果它不支持那么我们将如何处理Hive中的Sp?有任何替代解决方案? (因为我们已经在mssql中有一个数据库) HBASE怎么样?它支持SP吗?
答案 0 :(得分:4)
Hive和Hbase不支持存储过程。但是,Hive计划在未来支持Sp(HIVE-3087)。 HBase没有支持Sp的计划,因为它只专注于存储,而更像是NoSQL。
Hive UDF可以实现存储过程的某些功能,但这还不够。
答案 1 :(得分:4)
首先,Hadoop或Hive是NOT
的替代SQL DB。您绝不能将这两个中的任何一个用作RDBMS的替代品。
Hive的开发只是为了在现有Hadoop集群之上提供仓储功能,同时牢记大量SQL用户,专家数据库设计人员和管理员,以及使用SQL从数据仓库中提取信息的临时用户。虽然它为您提供了类似SQL的接口,但它不是SQL DB。 Hive最适合数据仓库应用程序,其中分析相对静态的数据,不需要快速响应时间,以及何时数据不会快速变化。简单地说是offline batch processing
种东西。
HBase中没有类似存储过程的东西。但它们有一个名为Coprocessor
的东西,它类似于RDBMS中的存储过程。要在协处理器上找到更多信息,您可以转到here。
正如@zsxwing所说,Sqoop只是一个数据迁移工具,仅此而已。一旦你切换到NoSQL世界,你需要灵活,你需要遵守NoSQL规则。
如果你能详细说明你的用例,也许我们可以帮助你更好。
回应你的评论:
是Facebook广泛使用Hadoop和Hive等相关工具。 Infact Hive是在Facebook开发的。但这些不是唯一的东西。无论他们有OLTP和完全交易需求,他们仍然依赖于RDBMS。一个例子是他们的Timeline
功能,它使用MySQL。他们有一个巨大的(和令人敬畏的)管道,它包含很多东西,而不仅仅是Hadoop和Hive。见下图。
答案 2 :(得分:1)
Hive确实没有任何存储过程,如现有答案中所述。但是,这里有两个减轻因素:
当然,它不是存储过程的正确替代品,但通过智能地使用视图,您可以省去对某些过程的需要。
上次我遇到hive没有存储过程的问题时,我意识到我想要做的事情(循环遍历所有列)是我可以在另一个程序中做的事情。因此,我遵循以下工作流程:
hive -e
通过视图和外部调用,我到目前为止能够解决缺少存储过程的问题。
答案 3 :(得分:0)
请参阅HPL/SQL,我正在寻找相同的解决方案,但尚未尝试。
我认为数据仓库应用程序需要存储过程支持,但更喜欢基于行的过程而不是基于行的过程。
根据我的个人经验,在结构化数据仓库应用程序中利用服务器端程序模板时需要程序支持。它使数据仓库应用程序更容易在SQL / NoSQL之间移植,如Netezza,MSSQL,Oracle,DB2和BigInsight。
答案 4 :(得分:-1)
在http://www.plhql.org查看开源项目PL / HQL。它允许您在Hive中运行现有的SQL Server,Oracle,Teradata,MySQL等存储过程。