2016-09-20 13 views
3

私はscala、spark、IntelliJ、およびmavenを使用しています。エラー:見つからない:value lit/when - spark 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

$と===の場合、 "import sqlContext.implicits.StringToColumn" の代替手段はありますか – Avijit

関連する問題