Ошибка: не найдено: значение горит / при запуске scala

#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» в случае $ и ===