Spark SQL - строка запроса Escape

Я не могу поверить, что я спрашиваю это, но ...

КАК ВЫ СОБИРАЕТЕ СТРОКУ SQL QUERY В SPARK SQL С ИСПОЛЬЗОВАНИЕМ SCALA?

Я устал все и искал везде. Я думал, что библиотека Apache Commons сделает это, но не повезло:

import org.apache.commons.lang.StringEscapeUtils

var sql = StringEscapeUtils.escapeSql("'Ulmus_minor_'Toledo'");

df.filter("topic = '" + sql + "'").map(_.getValuesMap[Any](List("hits","date"))).collect().foreach(println);

возвращает следующее:

topic = '' 'Ulmus_minor _' 'Toledo' '' ^ at scala.sys.package $ .error (package.scala: 27) в org.apache.spark.sql.catalyst.SqlParser.parseExpression (SqlParser.scala: 45) на org.apache.spark.sql.DataFrame.filter (DataFrame.scala: 651) на $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC. (: 29 ) на $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC. (: 34) на $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC. (: 36) на $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC. (: 38) на $ iwC $ iwC $ iwC $ iwC $ iwC. (: 40) на $ iwC $ iwC $ iwC $ iwC. (: 42) при $ iwC $ iwC $ iwC. (: 44) при $ iwC $ iwC. (: 46) при $ iwC. (: 48) при (: 50) at. (: 54) at. () At. (: 7) at. () В $ print () в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke ( NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:497) в org.repainp $ .call (SparkIMain.scala: 1065) в org.apache.spark.repl.SparkIMain $ Request.loadAndRu n (SparkIMain.scala: 1338) в org.apache.spark.repl.SparkIMain.loadAndRunReq $ 1 (SparkIMain.scala: 840) в org.apache.spark.repl.SparkIMain.interpret (SparkIMain.scala: 871) в орг. apache.spark.repl.SparkIMain.interpret (SparkIMain.scala: 819) в org.apache.spark.repl.SparkILoop.reallyInterpret $ 1 (SparkILoop.scala: 857) в org.apache.spark.repl.SparkILoop.interpretStarting .scala: 902) в org.apache.spark.repl.SparkILoop.command (SparkILoop.scala: 814) в org.apache.spark.repl.SparkILoop.processLine $ 1 (SparkILoop.scala: 657) в org.apache.spark .repl.SparkILoop.innerLoop $ 1 (SparkILoop.scala: 665) в org.apache.spark.repl.SparkILoop.org $ apache $ spark $ repl $ SparkILoop $ loop (SparkILoop.scala: 670) в org.apache.spark .repl.SparkILoop $ anonfun $ org $ apache $ spark $ repl $ SparkILoop $ process $ 1.apply $ mcZ $ sp (SparkILoop.scala: 997) в org.apache.spark.repl.SparkILoop $ anonfun $ org $ apache $ spark $ repl $ SparkILoop $ process $ 1.apply (SparkILoop.scala: 945) в org.apache.spark.repl.SparkILoop $ anonfun $ org $ apache $ spark $ r epl $ SparkILoop $ process $ 1.apply (SparkILoop.scala: 945) в scala.tools.nsc.util.ScalaClassLoader $ .savingContextLoader (ScalaClassLoader.scala: 135) в org.apache.spark.repl.SparkILoop.org $ apache $ spark $ repl $ Процесс SparkILoop $ (SparkILoop.scala: 945) в org.apache.spark.repl.SparkILoop.process (SparkILoop.scala: 1059) в org.apache.spark.repl.Main $ .main (Main .scala: 31) в org.apache.spark.repl.Main.main (Main.scala) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorI62l.j) sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:497) в org.apache.spark.deploy.SparkSubmit $ spark.org $ apache $ SparkSubmit $ runMain (SparkSubmit.scala: 665) в org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1 (SparkSubmit.scala: 170) в org.apache.spark.deploy.SparkSubmit $ .submit (SparkSubmit.SpalaSubmit. : 193) в org.apache.spark.deploy.SparkSubmit $ .main (SparkSub mit.scala: 112) at org.apache.spark.deploy.SparkSubmit.main (SparkSubmit.scala)

Помощь была бы отличной.

j

Ответы на вопрос(2)

Ваш ответ на вопрос