Spark SQL - String de Consulta de Escape

Não acredito que estou perguntando isso, mas ...

COMO ESCAPAR UMA QUERY STRING DO SQL NO SPARK SQL USANDO SCALA?

Eu cansei de tudo e procurei em todos os lugares. Eu pensei que a biblioteca apache commons faria isso, mas sem sorte:

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);

retorna o seguinte:

topic = '' 'Ulmus_minor _' 'Toledo' '' ^ em scala.sys.package $ .error (package.scala: 27) em org.apache.spark.sql.catalyst.SqlParser.parseExpression (SqlParser.scala: 45) em org.apache.spark.sql.DataFrame.filter (DataFrame.scala: 651) em $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC. (: 29 ) em $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC. (: 34) em $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC. (: 36) em $ iwC $ iwC $ iwC $ iwC $ iwC $ iwC. (: 38) em $ iwC $ iwC $ iwC $ iwC $ iwC. (: 40) em $ iwC $ iwC $ iwC $ iwC. (: 42) em $ iwC $ iwC $ iwC. (: 44) em $ iwC $ iwC. (: 46) em $ iwC. (: 48) em (: 50) em. (: 54) em. () Em. (: 7) em. () Em $ print () em sun.reflect.NativeMethodAccessorImpl.invoke0 (método nativo) em sun.reflect.NativeMethodAccessorImpl.invoke ( NativeMethodAccessorImpl.java:62) em sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) em java.lang.reflect.Method.invoke (Method.java:497) em org.apache.spark.repl.SvalIMPrincipal .call (SparkIMain.scala: 1065) em org.apache.spark.repl.SparkIMain $ Request.loadAndRu n (SparkIMain.scala: 1338) em org.apache.spark.repl.SparkIMain.loadAndRunReq $ 1 (SparkIMain.scala: 840) em org.apache.spark.repl.SparkIMain.interpret (SparkIMain.scala: 871) em org. apache.spark.repl.SparkIMain.interpret (SparkIMain.scala: 819) em org.apache.spark.repl.SparkILoop.reallyInterpret $ 1 (SparkILoop.scala: 857) em org.apache.spark.repl.SparkILoop.interpretStartingWith (SparkILoop .scala: 902) em org.apache.spark.repl.SparkILoop.command (SparkILoop.scala: 814) em org.apache.spark.repl.SparkILoop.processLine $ 1 (SparkILoop.scala: 657) em org.apache.spark .repl.SparkILoop.innerLoop $ 1 (SparkILoop.scala: 665) em org.apache.spark.repl.SparkILoop.org $ apache $ spark $ repl $ SparkILoop $ loop (SparkILoop.scala: 670) em org.apache.spark .repl.SparkILoop $ anonfun $ org $ apache $ spark $ repl $ SparkILoop $ process $ 1.apply $ mcZ $ sp (SparkILoop.scala: 997) em org.apache.spark.repl.SparkILoop $ anonfun $ org $ apache $ spark $ repl $ SparkILoop $ process $ 1.apply (SparkILoop.scala: 945) em org.apache.spark.repl.SparkILoop $ anonfun $ org $ apache $ spark $ r epl $ SparkILoop $ process $ 1.apply (SparkILoop.scala: 945) em scala.tools.nsc.util.ScalaClassLoader $ .savingContextLoader (ScalaClassLoader.scala: 135) em org.apache.spark.repl.SparkILoop.org $ apache $ spark $ repl $ SparkILoop $ process (SparkILoop.scala: 945) em org.apache.spark.repl.SparkILoop.process (SparkILoop.scala: 1059) em org.apache.spark.repl.Main $ .main (Main .scala: 31) em org.apache.spark.repl.Main.main (Main.scala) em sun.reflect.NativeMethodAccessorImpl.invoke0 (método nativo) em sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) em sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) em java.lang.reflect.Method.invoke (Method.java:497) em org.apache.spark.deploy.SparkSubmit $ .org $ apache $ spark $ deploy $ SparkSubmit $ runMain (SparkSubmit.scala: 665) em org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1 (SparkSubmit.scala: 170) em org.apache.spark.deploy.SparkSubmit $ .submit (SparkSubmit.scala : 193) em org.apache.spark.deploy.SparkSubmit $ .main (SparkSub mit.scala: 112) em org.apache.spark.deploy.SparkSubmit.main (SparkSubmit.scala)

A ajuda seria ótima.

j

questionAnswers(2)

yourAnswerToTheQuestion