【发布时间】:2016-12-01 11:07:14
【问题描述】:
我有运行 spark 版本 1.6.0 的 cloudera vm
我从 CSV 文件创建了一个数据框,现在根据一些 where 子句过滤列
df = sqlContext.read.format('com.databricks.spark.csv').options(header='true').load('file:///home/cloudera/sample.csv')
df.registerTempTable("closedtrips")
result = sqlContext.sql("SELECT id,`safety rating` as safety_rating, route FROM closedtrips WHERE `trip frozen` == 'YES'")
但是它在 sql 行上给了我运行时错误。
py4j.protocol.Py4JJavaError: An error occurred while calling o21.sql.
: java.lang.RuntimeException: [1.96] failure: identifier expected
SELECT consigner,`safety rating` as safety_rating, route FROM closedtrips WHERE `trip frozen` == 'YES'
^
我哪里错了?
上述命令在 vm 命令行中失败,但在 databricks 环境中运行时运行良好
还有为什么 vm 中的列名区分大小写,它无法识别“trip freeze”,因为实际的列是“trip freeze”。 所有这些在数据块中都可以正常工作,并且在 vm 中中断
【问题讨论】:
标签: apache-spark apache-spark-sql spark-dataframe