-1

根据这个 Spark Catalyst 是一个与实现无关的框架,用于操作关系运算符和表达式的树。我想使用 Spark Catalyst 解析 SQL DML 和 DDL 来编写和生成自定义 Scala 代码。但是,通过阅读代码,我不清楚是否有任何可以使用的围绕 Catalyst 的包装类?理想的包装器将接收一条 sql 语句并生成等效的 Scala 代码。对于我的用例看起来像这样

def generate("select substring(s, 1, 3) as from t1") = 
{ // custom code 
 return custom_scala_code_which is executable given s as List[String]
}

这是一个简单的例子,但想法是我不想编写另一个解析器,我需要从遗留系统中解析许多 SQL 功能,我必须为它们编写自定义 Scala 实现。

在一个更普遍的问题中,由于缺乏类级设计文档,人们如何学习代码库并做出贡献?

4

2 回答 2

-1

Dataframe 自动变成 RDD 并优化代码,这个优化是通过 Catalyst 完成的。当程序员在 Dataframe 中编写代码时,内部代码将被优化。欲了解更多详情,请访问

Spark 中的催化剂优化

于 2018-07-10T06:29:07.577 回答
-1

Spark 使用spark.sql. 例如:您可以将字符串SELECT * FROM table作为参数提供给诸如spark.sql("SELECT * FROM table")在将数据框定义为“表”之后。要将您的数据框定义为“表”以用于 SQL 查询,请使用创建一个临时视图

DataFrame.createOrReplaceTempView("table")

您可以在此处查看示例:

https://spark.apache.org/docs/2.1.0/sql-programming-guide.html#running-sql-queries-programmatically

于 2018-07-10T03:09:20.647 回答