2016-12-01 38 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

我相信這應該可以解決'失敗:標識符預期'問題;我不確定不區分大小寫。 –