2016-09-20 26 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