某些字段的SparkSQL选择错误

时间:2015-06-03 18:39:29

标签: python apache-spark apache-spark-sql

我正在使用spark 1.3.1,在python中,我有类似的东西:

t1=sqlCtx.createDataFrame(sizes, ["id", "sum"]) 

t1.registerTempTable("t1")

t1.take(1) <-- will show [Row(id=u'5b9a9171fde001c3d9b', sum=5)]

现在我可以sqlCtx.sql("select id from t1")

但我无法访问&#34;总结&#34;,当我执行sqlCtx.sql("select sum from t1")时,会产生以下错误:

py4j.protocol.Py4JJavaError: An error occurred while calling o99.sql.
: java.lang.RuntimeException: [1.12] failure: ``('' expected but 
`from' found
select sum from t1
       ^
    at scala.sys.package$.error(package.scala:27)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在大多数SQL方言中,SUM是一个保留关键字,用作聚合语句中的函数(例如,类似SELECT SUM(foo) FROM bar WHERE foo > 3)。这意味着SUM单独是一个无效的表达式,因为SQL解析器需要一个列作为应该聚合的参数。

要表明您指的是名为sum而不是sum函数,请尝试使用反引号来转义列名:

sqlCtx.sql("select `sum` from t1")