可以将PL / SQL可靠地转换为Pig Latin或带有Pig Latin和Hive的Oozie Pipeline

时间:2013-10-24 19:06:29

标签: hadoop plsql hive apache-pig oozie

我很想知道用Hadoop替换我的Oracle数据库并了解Hadoop生态系统。

如果我要走这条路,我有很多需要更换的PL / SQL脚本。

我的印象是,通过一些努力,我可以将任何PL / SQL脚本转换/翻译成类似的Pig Latin脚本。如果不仅是Pig Latin,那么通过Oozie将Hive和Pig结合起来。

这是对的吗?

2 个答案:

答案 0 :(得分:6)

虽然大多数SQL语句都可以转换为等效的Pig和/或Hive语句,但是有一些限制是hadoop文件系统固有的传递给语言的限制。主要限制是HDFS是一次写入,多次读取的系统。这意味着包含UPDATE SQL命令或DELETE sql命令之类的语句将不起作用。这主要是因为两者都要求编程语言能够改变现有文件的内容,这与hadoop的一次写入范式相矛盾。

但是有一些解决方法。这些命令都可以通过复制有问题的文件进行模拟,并在写入副本,删除原件以及将副本移动到原始位置时进行更改。猪和Hive都没有这个功能,所以你必须稍微分支出这些语言才能这样做。例如,几行bash可能会在猪脚本执行后处理副本的删除和移动。鉴于您可以使用bash首先调用pig脚本,这允许一个相当简单的解决方案。或者您可以查看HBase,它提供了执行类似操作的能力。然而,这两个解决方案都涉及Pig / Hive之外的事情,所以如果你绝对不能超出这些语言,答案就是否定。

答案 1 :(得分:3)

您可以使用PL/HQL - Procedural SQL on Hadoop这是一个开源项目,它旨在为Hive和其他SQL-on-Hadoop实现提供类似PL / SQL的过程语言。

  

PL / HQL是一个开源工具(Apache License 2.0),它为Apache Hive和其他SQL-on-Hadoop实现实现了过程SQL语言。

     

PL / HQL语言在很大程度上与Oracle PL / SQL,ANSI / ISO SQL / PSM(IBM DB2,MySQL,Teradata ie),Teradata BTEQ,PostgreSQL PL / pgSQL(Netezza),Transact-SQL( Microsoft SQL Server和Sybase)允许您利用现有的SQL / DWH技能和熟悉的方法在Hadoop上实现数据仓库解决方案。它还有助于将现有业务逻辑迁移到Hadoop。