2017-04-26 22 views
2

我通過使用數據幀創建一個表,我嘗試推出如下所示的查詢:org.apache.spark.sql.AnalysisException:無法解析「`angelique`」給定的輸入欄

val sc = SparkSession.builder() 
          .master("local") 
          .appName("Lea") 
          .getOrCreate() 
    // example login = angelique 
    var login:String = (givenName+"."+sn).replaceAll(" ", "") 

    sc.sql("SELECT login FROM global_temp.users where login="+login).show 

輸出錯誤:

17/04/26 10:11:01 INFO SparkSqlParser: Parsing command: users 
17/04/26 10:11:01 INFO SparkSqlParser: Parsing command: SELECT login FROM global_temp.users where login=angelique 
Exception in thread "main" org.apache.spark.sql.AnalysisException: cannot resolve '`angelique`' given input columns: [idExterne, login, password, uid]; line 1 pos 48; 
'Project ['login] 
+- 'Filter (login#60 = 'angelique) 
    +- SubqueryAlias users, `global_temp`.`users` 
     +- Project [_1#50 AS idExterne#59, _2#51 AS login#60, _3#52 AS password#61, _4#53 AS uid#62] 

回答

0

替換此代碼

sc.sql(s"SELECT login FROM global_temp.users where login='$login'").show 

,將工作

+0

它不工作 –

+0

你得到任何錯誤..? – Muhunthan

+0

相同的輸出錯誤 –

0

據我所知,在Spark 2.0.1的列名中不允許有一個點。我不確定它在DF名稱中是否被允許。也許你可以嘗試省略或替換DF名稱中的點?

0

試試這個

sc.sql(S 「選擇登錄FROM global_temp.users哪裏登錄=== '$登錄'」)。顯示

+0

爲什麼這會有所幫助?字符串連接通常工作正常 –

+0

是的,正確的連接工作正常,因爲你說。上面的過程可能是實現結果的兩個步驟,首先我們需要傳遞concatement值,然後我們需要傳遞它。 – Surya

相關問題