在 Python 中编写逻辑或在 Foundry 的 SQL 转换中编写普通 SQL 有什么区别?

What is the difference beween writting logic in Python or plain SQL in Foundry's SQL Transforms?

Foundry 的 SQL Transforms 至少提供了两种编写逻辑代码的方式:Python 和纯文本 SQL.

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

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

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

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

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

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

这里还有太多其他内容无法列出,所以我邀请您尝试使用 Python 转换,并通读 https://www.palantir.com/docs/foundry/transforms-python/transforms-python-api/ 中的文档。这是我的一些最爱:数据期望、单元测试、将 re-usable pyspark 逻辑捕获为 python 库、多输出转换、使用公开可用的开源库进行数据操作、访问数据集文件系统以进行手动解析需要时...

p.s.: 你也可以用其他语言做转换,比如java.