我很好奇用hadoop替换我的oracledb,并且正在学习hadoop生态系统。我有许多pl/sql脚本,如果我要走这条路,就需要替换它们。我的印象是,通过一些艰苦的工作,我可以将任何pl/sql脚本转换成类似的pig拉丁语脚本。如果不仅仅是Pig拉丁语,那么Hive和Pig通过oozie的组合。是这样吗?
wlsrxk511#
您可以在hadoop上使用pl/hql-proceduralsql,这是一个开源项目,旨在为hive和其他hadoop上的sql实现提供类似pl/sql的过程语言。pl/hql是一个开源工具(apachelicense 2.0),它为apachehive和hadoop实现上的其他sql实现过程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的迁移。
b4qexyjb2#
虽然大多数sql语句都可以转换为等效的pig和/或hive语句,但是hadoop文件系统固有的一些限制会传递到语言中。主要限制是hdfs是一个一次写入,多次读取的系统。这意味着包含updatesql命令或deletesql命令之类的语句将无法工作。这主要是因为两者都要求编程语言能够更改已经存在的文件的内容,这与hadoop的一次写入范式相矛盾。不过,这些问题还有解决办法。这些命令都可以通过复制有问题的文件来模拟,并在写入副本、删除原件以及将副本移动到原件位置时进行更改。pig和hive都没有这个功能,因此您必须稍微扩展这些语言才能做到这一点。例如,在pig脚本执行之后,bash的几行代码可能会处理拷贝的删除和移动。考虑到您可以首先使用bash来调用pig脚本,这就提供了一个相当简单的解决方案。或者你可以研究hbase,它提供了做类似事情的能力。然而,这两种解决方案都涉及到Pig/Hive之外的东西,所以如果你绝对不能超越这些语言,答案是否定的。
2条答案
按热度按时间wlsrxk511#
您可以在hadoop上使用pl/hql-proceduralsql,这是一个开源项目,旨在为hive和其他hadoop上的sql实现提供类似pl/sql的过程语言。
pl/hql是一个开源工具(apachelicense 2.0),它为apachehive和hadoop实现上的其他sql实现过程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的迁移。
b4qexyjb2#
虽然大多数sql语句都可以转换为等效的pig和/或hive语句,但是hadoop文件系统固有的一些限制会传递到语言中。主要限制是hdfs是一个一次写入,多次读取的系统。这意味着包含updatesql命令或deletesql命令之类的语句将无法工作。这主要是因为两者都要求编程语言能够更改已经存在的文件的内容,这与hadoop的一次写入范式相矛盾。
不过,这些问题还有解决办法。这些命令都可以通过复制有问题的文件来模拟,并在写入副本、删除原件以及将副本移动到原件位置时进行更改。pig和hive都没有这个功能,因此您必须稍微扩展这些语言才能做到这一点。例如,在pig脚本执行之后,bash的几行代码可能会处理拷贝的删除和移动。考虑到您可以首先使用bash来调用pig脚本,这就提供了一个相当简单的解决方案。或者你可以研究hbase,它提供了做类似事情的能力。然而,这两种解决方案都涉及到Pig/Hive之外的东西,所以如果你绝对不能超越这些语言,答案是否定的。