我正在使用scala,spark,IntelliJ和maven。
我使用了以下代码:
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构建时,低于错误 -
错误:找不到:
时的值
和
错误:未找到:值已点亮
对于$
和===
,我使用了import sqlContext.implicits.StringToColumn
,它运行正常。 maven build时没有发生错误。但lit(0)
和when
我需要导入什么,还是有其他方法可以解决问题。
答案 0 :(得分:15)
让我们考虑以下背景:
val spark : SparkSession = _ // or val sqlContext: SQLContext = new SQLContext(sc) for 1.x
val list: DataFrame = ???
要使用when
和lit
,您需要导入正确的功能:
import org.apache.spark.sql.functions.{col, lit, when}
现在您可以按照以下方式使用它们:
list.select(when(col("column_name").isNotNull, lit(1)))
现在您也可以在代码中使用lit:
val score = list.withColumn("scr", lit(0))