2013-06-13 39 views
3

为什么配置单元不支持存储过程? 如果它不支持那么我们将如何处理Hive中的Sp?有任何替代解决方案? (因为我们已经有一个数据库存在于mssql中) HBASE呢?它支持SP吗?为什么Hive不支持存储过程?

回答

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和配置单元和其他相关工具广泛。 Infact Hive是在Facebook上开发的。但这些不是唯一的东西。无论哪里有OLTP和完整的交易需求,它们仍然依赖于RDBMS。其中一个例子是Timeline功能,该功能使用MySQL。他们有一个巨大的(和真棒)管道,包括许多事情,而不仅仅是Hadoop和Hive。看下面的图片。

enter image description here

+0

谢谢,我听说Facebook正在使用Hadoop-Hive,那么他们将如何管理交易和所有的事情,以及sp(因为你主要告诉仓库) – Haris

+0

编辑我的答案,因为在这里无法回答这个问题。 – Tariq

4

Hive和Hbase不支持存储过程。不过,Hive计划在未来支持Sp(HIVE-3087)。 HBase没有支持Sp的计划,因为它只专注于存储,更像NoSQL。

Hive UDF可以实现存储过程的某些功能,尽管这还不够。

+0

然后我将如何处理我的SQL DB(因为我想在我当前的项目中使用它的替代sql) – Haris

+0

Hive中的SQL方言称为HQL。它与MySQL SQL有一些不同。如果你的SQL非常复杂,恐怕你需要重写一些代码(甚至是一些UDF Java代码)以从MySQL迁移到Hive。 – zsxwing

+0

如果您决定使用Hive,我建议您阅读[Programming Hive](http://www.amazon.com/Programming-Hive-Edward-Capriolo/dp/1449319335) – zsxwing

-1

看一看开源项目PL/HQL在http://www.plhql.org。它允许您在Hive中运行现有的SQL Server,Oracle,Teradata,MySQL等存储过程。

+0

从Hive 2.0开始,我们将在Hive中获得SP功能。 https://issues.apache.org/jira/browse/HIVE-11055 – BigData

1

蜂房不具备存储过程

蜂房确实没有任何存储过程在现有的答案解释。但是,这里有2个缓解因素:

蜂巢享有

当然它不是存储过程的适当代用品,但与智能应用的观点可以或许删除一些你的程序的需要。

你可以叫蜂巢从另一个程序

上次我遇到了该配置单元不具备存储过程的问题,我意识到事情我想做的事(在所有列循环),完全是我也可以在另一个程序中做。因此我遵循以下流程:

  1. 运行查询来获取相关(元)数据:Python会自动调用蜂巢获得列名
  2. 使用这些信息来构建查询:Python的发生在所有列名并建立correspondng select语句
  3. 运行结果查询:Python做与hive -e
  4. 可选系统调用,如果需要的话

的意见和外部CAL去2目前为止,我已经能够解决缺乏存储过程的问题。

0

请参阅HPL/SQL,我正在寻找相同的解决方案,但还没有尝试。

我相信数据仓库应用程序需要存储过程支持,但更喜欢基于集合而不是基于行的过程。

根据我个人的经验,在结构化数据仓库应用程序中利用服务器端程序模板时需要程序支持。它使数据仓库应用程序更易于在SQL/NoSQL之间移植,如Netezza,MSSQL,Oracle,DB2和BigInsight。