到 Spark 的 MS SQL 服务器存储过程

Posted

技术标签:

【中文标题】到 Spark 的 MS SQL 服务器存储过程【英文标题】:MS SQL server stored procedures to Spark 【发布时间】:2016-06-24 06:14:02 【问题描述】:

我们将 MS SQL 服务器作为各种数据库的主要选项,并且我们定期运行数百个存储过程。 现在我们正在转向完全大数据堆栈。我们将 Spark 用于批处理作业。但是,我们已经投入了巨大的精力来创建这些存储过程。有没有办法在 Spark 之上重用存储过程?还是有一种简单的方法可以将它们迁移到 Spark 而不是从头开始编写?

或者像 Cloudera distribution/impala 这样的框架可以满足这个要求?

【问题讨论】:

【参考方案1】:

不,据我所知没有。您也许可以使用非常相似的逻辑流程,但您需要投入大量时间和精力将 T-SQL 转换为 Spark。我建议直接使用 Scala,不要在 Python/PySpark 上浪费时间。

我的转换经验法则是尝试将存储过程中的 SQL 作为 Spark 中的 SQL (sqlContext.sql("SELECT x FROM y")) 执行任何操作,但请注意 Spark DataFrame 是不可变的,因此任何 UPDATEDELETE 操作必须更改以输出新的修改后的 DataFrame。

【讨论】:

自从这个原始答案以来,Amazon Redshift(和其他一些云 DW)已经引入了对存储过程的支持。

以上是关于到 Spark 的 MS SQL 服务器存储过程的主要内容,如果未能解决你的问题,请参考以下文章

将 MS SQL 存储过程移植到 MySQL

MS SQL 批量给存储过程/函数授权

将数据从 MS Sql Server 存储过程导出到 excel 文件

使用 PDO 在 php 中使用 mac 运行 MS SQL 服务器存储过程

MS SQL Server - 如何将所有存储过程从我的机器导出到我的朋友机器?

MS SQL 作业在具有 Windows 身份验证的链接服务器上运行存储过程