Apache spark 比较Spark SQL中的项时where子句内部出错

Apache spark 比较Spark SQL中的项时where子句内部出错,apache-spark,apache-spark-sql,spark-dataframe,Apache Spark,Apache Spark Sql,Spark Dataframe,我让cloudera虚拟机运行spark 1.6.0版 我从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

我让cloudera虚拟机运行spark 1.6.0版

我从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 Frozed”,因为实际列是“trip Frozed”。
所有这些在数据块中都可以正常工作,在vm中也可以中断。在您的vm中,您是将
sqlContext
创建为
sqlContext
还是将其创建为
HiveContext

在Databricks中,自动创建的
sqlContext
将始终指向一个
HiveContext


在Spark 2.0中,
HiveContext
和常规的
SQLContext
之间的这种区别并不重要,因为它们都被
SparkSession
所包含,但在Spark 1.6中,这两种上下文在解析SQL语言输入的方式上略有不同。

在虚拟机中,您是将
sqlContext
创建为
sqlContext
还是创建为
HiveContext

在Databricks中,自动创建的
sqlContext
将始终指向一个
HiveContext


在Spark 2.0中,
HiveContext
和常规的
SQLContext
之间的这种区别并不重要,因为它们都被
SparkSession
所包含,但在Spark 1.6中,这两种上下文在解析SQL语言输入的方式上略有不同。

我将其定义为SQLContext,SQLContext=SQLContext(sc)如果我将其定义为hivecontext,则区分大小写的问题将得到解决?我相信这可能会解决
故障:预期标识符
问题;我不确定是否区分大小写。我将其定义为sqlcontext,sqlcontext=sqlcontext(sc)。如果我将其定义为hivecontext,则区分大小写的问题将得到解决?我相信这可能会解决
故障:预期标识符
问题;我不能马上确定案件的敏感性。