PL/SQL 能否可靠地转换为 Pig Latin 或带有 Pig Latin 和 Hive 的 Oozie 管道

Posted

技术标签:

【中文标题】PL/SQL 能否可靠地转换为 Pig Latin 或带有 Pig Latin 和 Hive 的 Oozie 管道【英文标题】:Can PL/SQL Reliably be Converted to Pig Lating or an Oozie Pipeline with Pig Latin and Hive 【发布时间】:2013-10-24 19:06:29 【问题描述】:

我很想用 Hadoop 替换我的 Oracle 数据库,并且正在了解 Hadoop 生态系统。

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

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

这是正确的吗?

【问题讨论】:

相关:***.com/questions/10074010/convert-pl-sql-to-hive-ql 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于PL/SQL 能否可靠地转换为 Pig Latin 或带有 Pig Latin 和 Hive 的 Oozie 管道的主要内容,如果未能解决你的问题,请参考以下文章

OCR 软件能否可靠地从表中读取值?

如何使用非默认 NLS_NUMERIC_CHARACTERS 在 Oracle PL/SQL 中有效地将文本转换为数字?

我可以在 Apache Pig Latin 中将命令拆分为多行吗?

将存储过程 PL/SQL 转换为 Java

何时不使用 Pig Latin

用 Pig Latin 为每组编写一个文件