2016-12-01 33 views
0

我的Cloudera VM基于一些WHERE子句错误里面的where子句而在星火SQL比较项目

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'") 
运行火花1.6.0版本

我创建从CSV文件中的数据帧,现在过滤列

但是,它给了我的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敏感,它没有认识到“行程冻结”,因为实际的列是“旅行却工作正常冻结”。 在VM

回答

2

databricks和休息所有这一切工作正常,在你的虚拟机,你创建sqlContextSQLContext或作为HiveContext

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

在星火2.0 HiveContext和定期SQLContext之间的区别并不重要,因为这两个已被纳入SparkSession,但在星火1.6两种类型的上下文中他们是如何解析SQL语言输入略有不同。

+0

我将它定义为sqlcontext,sqlContext = SQLContext(sc) 如果将其定义为hivecontext,则大小写敏感性问题将得到解决? –

+0

我相信这应该可以解决'失败:标识符预期'问题;我不确定不区分大小写。 –