Github user zzcclp commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/1469#discussion_r152730468
--- Diff:
integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSparkSqlParser.scala
---
@@ -38,7 +40,26 @@ import org.apache.carbondata.spark.util.CommonUtil
*/
class CarbonSparkSqlParser(conf: SQLConf, sparkSession: SparkSession)
extends AbstractSqlParser {
- val astBuilder = new CarbonSqlAstBuilder(conf)
+ val parser = new CarbonSpark2SqlParser
+ val astBuilder = getAstBuilder()
+
+ def getAstBuilder(): AstBuilder = {
+ if (sparkSession.version.contains("2.1")) {
+ val clazz =
Utils.classForName("org.apache.spark.sql.hive.CarbonSqlAstBuilder")
+ val ctor = clazz.getConstructors.head
+ ctor.setAccessible(true)
+ val astBuilder = ctor.newInstance(conf,
parser).asInstanceOf[AstBuilder]
+ astBuilder
+ } else if (sparkSession.version.contains("2.2")) {
+ val clazz =
Utils.classForName("org.apache.spark.sql.hive.CarbonSqlAstBuilder")
+ val ctor = clazz.getConstructors.head
+ ctor.setAccessible(true)
+ val astBuilder = ctor.newInstance(conf,
parser).asInstanceOf[AstBuilder]
+ astBuilder
--- End diff --
what's the difference between the code for 2.1 and 2.2
---