2016-09-20 49 views
3

我正在使用scala,spark,IntelliJ和maven。錯誤:未找到:值點亮/當 - 火花scala

我用下面的代碼:

val joinCondition = when($"exp.fnal_expr_dt" >= $"exp.nonfnal_expr_dt", 
$"exp.manr_cd"===$"score.MANR_CD") 

val score = exprDF.as("exp").join(scoreDF.as("score"),joinCondition,"inner") 

val score= list.withColumn("scr", lit(0)) 

但是,當試圖建立使用maven,得到下面的錯誤 -

error: not found: value when

error: not found: value lit

對於$===我已經使用import sqlContext.implicits.StringToColumn它工作正常。 Maven構建時沒有發生錯誤,但是對於lit(0)when我需要導入或者有任何其他方式來解決問題。

+0

您需要導入'org.apache.spark.sql.functions' – cheseaux

+0

我已經回答了您的部分問題。什麼是列表的類型?它是一個DataFrame? – eliasah

+0

@eliasah:兩者都是Dataframe – Avijit

回答

10

讓我們考慮以下方面:

val spark : SparkSession = _ // or val sqlContext: SQLContext = new SQLContext(sc) for 1.x 
val list: DataFrame = ??? 

要使用when和​​3210,你需要導入適當的功能:

import org.apache.spark.sql.functions.{col, lit, when} 

現在你可以使用它們如下:

list.select(when(col("column_name").isNotNull, lit(1))) 

現在,您也可以在代碼中使用點亮:

val score = list.withColumn("scr", lit(0)) 
+0

是否有任何替代「導入sqlContext.implicits.StringToColumn」 的情況下$和=== – Avijit