将 Presto 与自定义 SQL 结合使用,例如 DSL

Using Presto with custom SQL like DSL

我的 Web 应用程序应使用像 DSL 这样的自定义 SQL 来深入了解存储在数据湖上的镶木地板文件。现在,我使用 Spark 将此 DSL 命令转换为 DataFrame API,但我意识到使用 Presto\Impala 等 MPP 解决方案可以获得更好的性能,因为它们总是为 SQL 执行。但我有一个限制——将 DSL 转换为 SQL 应该在第三方地方完成。我知道我可以构建一个代理应用程序来从这个 DSL 转换到 SQL。我的下一个问题是:有没有办法在 Presto 方面进行这种转换?

is there any way to make this transformation on Presto's side?

Presto 没有 语言 的任何扩展点,因此它不允许替换 SQL 或通过插件扩展它。

当然,您可以在 Presto 中滚动您的迷你语言替换 SQL 解析器和分析器,但这将是很多工作。如果您选择此路径,您可以在 Presto Community Slack 上的 #dev 频道寻求指导。但是,我不建议重新实现语言层——从时间的角度来看这很昂贵。

我建议在您的应用程序或 Presto 前面的某个代理中将您的自定义 DSL 翻译成 SQL。您可以使用 presto-proxy 作为基础方便地为 Presto 构建代理。