2016-11-15 14 views
-1

私はDataFrame(Apache Spark 1.5)を持っています。 spark SQLコンテキストを使用して新しい列を追加して、すべてのローが単一引用符を含む新しい列を取得します。Spark SQLの一重引用符エラー

マイコード:実行スパーク投げた後

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

次の例外:

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

次のコード作業を正しくし、単一文字で新しい行を追加します。

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

何午前私は間違っている?私は、私が使用できないことを理解tempdf` FROM quoteColとして、 `* SELECT '\' ':

答えて

0

SQL文字列は単一引用符を使用する必要があります

sqlContext().sql("SELECT *, '\"' AS quoteCol FROM tempdf"); 
+0

を次式が同じ例外が発生しますそれらの外側の同じ引用符の中に引用符? –

+0

私のためにうまく動作します。 –

関連する問題