2016-10-04 62 views
2

我有一個Spark程序正在讀取CSV文件並將它們加載到Dataframes中。一旦加載,我使用SparkSQL來操縱它們。org.apache.spark.sql.AnalysisException:無法解析給定的輸入列

當運行我的星火的工作,它失敗,使我有以下異常:

org.apache.spark.sql.AnalysisException:無法解析「action」給定的輸入欄[「阿爾法」,「測試版」, 「伽馬」,「Δ」,「動作」]

當SparkSQL試圖解析按照上述拋出異常:

SELECT *, 
    IF(action = 'A', 1, 0) a_count, 
    IF(action = 'B', 1, 0) b_count, 
    IF(action = 'C', 1, 0) c_count, 
    IF(action = 'D', 1, 0) d_count, 
    IF(action = 'E', 1, 0) e_count 
FROM my_table 

此代碼更新到火花2.0之前工作得很好。有沒有人有任何想法會導致這個問題?

編輯:我加載使用Databricks CSV解析器的CSV文件:

sqlContext.read().format("csv") 
    .option("header", "false") 
    .option("inferSchema", "false") 
    .option("parserLib", "univocity") 
    .load(pathToLoad); 
+0

你如何從csv閱讀? –

+0

嗨@ArunakiranNulu,我正在使用Databricks CSV庫加載CSV文件。在原文中查看我的編輯。 – dmux

回答

0

在建CSV支持星火2.0已經加入,嘗試像下面。

spark.read.format("csv").option("header","false").load("../path_to_file/file.csv") 
spark.read.option("header", "false").csv("../path_to_file/file.csv") 
+0

感謝您的建議。我改變了我的代碼,但仍然得到相同的錯誤。 – dmux

+0

你在哪裏測試這個?你是通過火花外殼還是本地火花提交,或者單獨使用,還是使用YARN或Mesos? –

+0

嘗試通過spark-submit – dmux

0

嘗試在您的選擇中加入反引號。

SELECT *, 
    IF(`action` = 'A', 1, 0) a_count, 
    IF(`action` = 'B', 1, 0) b_count, 
    IF(`action` = 'C', 1, 0) c_count, 
    IF(`action` = 'D', 1, 0) d_count, 
    IF(`action` = 'E', 1, 0) e_count 
FROM my_table 

這適用於像MySQL某些數據庫爲好。

相關問題