我正在使用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)
有什么想法吗?
答案 0 :(得分:0)
在大多数SQL方言中,SUM
是一个保留关键字,用作聚合语句中的函数(例如,类似SELECT SUM(foo) FROM bar WHERE foo > 3
)。这意味着SUM
单独是一个无效的表达式,因为SQL解析器需要一个列作为应该聚合的参数。
要表明您指的是名为sum
的列而不是sum
函数,请尝试使用反引号来转义列名:
sqlCtx.sql("select `sum` from t1")