根据this 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实现。
在一个更通用的问题中,由于缺少类级别的设计文档,有人如何学习代码库并做出贡献?
答案 0 :(得分:-1)
Spark使用spark.sql
进行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
答案 1 :(得分:-1)
数据帧自动更改为RDD并优化代码,并且此优化是通过Catalyst完成的。当程序员在Dataframe中编写代码时,内部代码将得到优化。有关更多详细信息,visit