#apache-spark #spark-dataframe
#scala #maven #intellij-идея #apache-spark
Вопрос:
Я использую 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 ошибка не произошла.Но для lit(0)
и when
что мне нужно импортировать или есть какой-либо другой способ решить проблему.
Комментарии:
1. Вам необходимо импортировать
org.apache.spark.sql.functions
2. Я ответил на часть вашего вопроса. Каков тип списка? это фрейм данных?
3. @eliasah: оба являются фреймом данных
4. Какую версию Spark вы используете?
Ответ №1:
Давайте рассмотрим следующий контекст :
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))
Комментарии:
1. Есть ли какая-либо альтернатива для «import SQLContext.implicits. StringToColumn» в случае $ и ===