我很想用 Hadoop 替换我的 Oracle 数据库,并且正在学习 Hadoop 生态系统。
如果我要走这条路,我有许多需要替换的 PL/SQL 脚本。
我的印象是,通过一些努力,我可以将任何 PL/SQL 脚本转换/翻译成类似的 Pig Latin 脚本。如果不仅仅是 Pig Latin,那么 Hive 和 Pig 通过 Oozie 的组合。
这个对吗?
我很想用 Hadoop 替换我的 Oracle 数据库,并且正在学习 Hadoop 生态系统。
如果我要走这条路,我有许多需要替换的 PL/SQL 脚本。
我的印象是,通过一些努力,我可以将任何 PL/SQL 脚本转换/翻译成类似的 Pig Latin 脚本。如果不仅仅是 Pig Latin,那么 Hive 和 Pig 通过 Oozie 的组合。
这个对吗?
虽然大多数 SQL 语句可以翻译成等效的 Pig 和/或 Hive 语句,但 hadoop 文件系统固有的一些限制会传递给这些语言。主要限制是 HDFS 是一次写入、多次读取的系统。这意味着包含诸如 UPDATE SQL 命令或 DELETE sql 命令之类的语句将不起作用。这主要是因为两者都要求编程语言能够更改现有文件的内容,这与 hadoop 的一次写入范例相矛盾。
然而,这些都有解决方法。这些命令都可以通过复制相关文件并在写入副本、删除原始文件以及将副本移动到原始位置时进行更改来模拟。pig 和 Hive 都没有此功能,因此您必须稍微扩展这些语言才能做到这一点。例如,一旦执行了 pig 脚本,几行 bash 可能就可以处理副本的删除和移动。鉴于您可以首先使用 bash 调用 pig 脚本,这允许一个相当简单的解决方案。或者您可以查看 HBase,它提供了执行类似操作的能力。然而,这两种解决方案都涉及 Pig/Hive 之外的东西,所以如果你绝对不能脱离这些语言,答案是否定的。
您可以使用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。