0

Foundry 的 SQL 转换提供了至少 2 种编写逻辑代码的方法:Python 和纯文本 SQL。

我已经注意到一些不同之处:

  • SQL 不允许增量计算,
  • SQL 不允许使用变量、常量或分解函数,
  • SQL 不允许向输出数据集添加参数,例如“列描述”。

我在某些方面错了,是否还有其他差异(例如执行时间、消耗的资源)?

4

1 回答 1

1

这是一个有点主观的问题,但让我试一试。在构建转换时,SQL 和 Python 的目的是构建一个 Spark Query,它将执行并返回一些东西。该内容将保存在您的输出数据集中。

顾名思义,SQL 是一种直接生成查询的“结构化查询语言”,而 Python 是一种传统的编程语言,需要借助名为 PySpark 的 Python 库来生成查询。

虽然 SQL 将生成您的查询计划并直接跳转到执行程序,但 Python 使您能够在驱动程序上运行代码,这反过来又使您能够使用语言工具来帮助您。

所以主要的区别是你可以在使用python时编写工具,而你不能在使用sql时编写工具。您在“允许增量计算”、“列描述”等上面列出的内容都是可能的,因为 Python 是一种常规编程语言,而且 Palantir 铸造厂已经提供了库来执行这些操作,但您也可以如果你想写你自己的。与只是查询语言的 SQL 不同,它不了解库,也不了解铸造厂本身。Python 还使整个代码库更易于维护、测试和扩展。

这里还有很多其他内容无法列出,因此我邀请您尝试 Python 转换,并通读yourstack.com/workspace/documentation/product/transforms/overview. 以下是我最喜欢的一些:数据期望、单元测试、将可重用的 pyspark 逻辑捕获为 python 库、多输出转换、使用公开可用的开源库进行数据操作、访问数据集文件系统以在需要时手动解析......

ps:也可以用其他语言做transform,比如java。

于 2022-02-07T11:34:00.213 回答