/ / Spark błąd pojedynczego zapytania SQL - java, sql, scala, apache-spark, apache-spark-sql

Spark błąd pojedynczego zapytania SQL - java, sql, scala, apache-spark, apache-spark-sql

Mam DataFrame (Apache Spark 1.5). Chcę dodać nową kolumnę za pomocą kontekstu iskry sql, aby uzyskać nową kolumnę, w której wszystkie surowce zawierają pojedynczy cytat.

Mój kod:

df.registerTempTable("tempdf");
df = df.sqlContext().sql("SELECT *, " \" " as quoteCol FROM tempdf");

Po wykonaniu Spark rzuca następny wyjątek:

Exception in thread "main" java.lang.RuntimeException: [1.44] failure: ``union"" expected but ErrorToken(end of input) found

SELECT *, " " " as quoteCol FROM tempdf
^
at scala.sys.package$.error(package.scala:27)
at org.apache.spark.sql.catalyst.AbstractSparkSQLParser.parse(AbstractSparkSQLParser.scala:36)
at org.apache.spark.sql.catalyst.DefaultParserDialect.parse(ParserDialect.scala:67)
at org.apache.spark.sql.SQLContext$$anonfun$2.apply(SQLContext.scala:211)
at org.apache.spark.sql.SQLContext$$anonfun$2.apply(SQLContext.scala:211)
at org.apache.spark.sql.execution.SparkSQLParser$$anonfun$org$apache$spark$sql$execution$SparkSQLParser$$others$1.apply(SparkSQLParser.scala:114)
at org.apache.spark.sql.execution.SparkSQLParser$$anonfun$org$apache$spark$sql$execution$SparkSQLParser$$others$1.apply(SparkSQLParser.scala:113)
at scala.util.parsing.combinator.Parsers$Success.map(Parsers.scala:137)
...

Następny kod działa poprawnie i dodaje nowy wiersz za pomocą jednego znaku:

df.registerTempTable("tempdf");
df = df.sqlContext().sql("SELECT *, " q " as quoteCol FROM tempdf");

Co ja robię źle?

Odpowiedzi:

0 dla odpowiedzi № 1

Łańcuchy SQL powinny używać pojedynczych cudzysłowów:

sqlContext().sql("SELECT *, """ AS quoteCol FROM tempdf");