【发布时间】:2015-04-15 21:29:21
【问题描述】:
Spark 版本是 1.3.0。
源代码来自SQLContext.scala(https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala):
@transient
protected[sql] val ddlParser = new DDLParser(sqlParser.apply(_))
@transient
protected[sql] val sqlParser = {
val fallback = new catalyst.SqlParser
new SparkSQLParser(fallback(_))
}
protected[sql] def parseSql(sql: String): LogicalPlan = {
ddlParser(sql, false).getOrElse(sqlParser(sql))
}
我无法真正理解上面的代码。
-
sqlParser.apply(_)是如何工作的?
(_)到底是什么? DDLParser的构造函数需要一个参数parseQuery: String => LogicalPlan,但是sqlParser.apply的返回类型是LogicalPlan。
- 同样,
fallback(_)也是apply调用,(_) 是如何工作的?
【问题讨论】:
标签: scala apache-spark