2017-12-25 3 views
1

私はすでにspark.implicits._を輸入してきた。しかし、まだ私が手にエラーケースクラスを使用してDataFrameでのマッピングが「データセットに格納された型のエンコーダを見つけることができません」で失敗するのはなぜですか?

Error:(27, 33) Unable to find encoder for type stored in a Dataset. Primitive types (Int, String, etc) and Product types (case classes) are supported by importing spark.implicits._ Support for serializing other types will be added in future releases.

私のようなケースクラスを持っている:

case class User(name: String, dept: String) 

と私が使用してDataSetにデータフレームを変換しています:

val ds = df.map { row=> User(row.getString(0), row.getString(1) } 

をか

val ds = df.as[User] 

また、同じコードを入力しようとしているときにエラーが発生するのは、IntelliJで実行した場合、またはジョブをサブミットしたときだけです。このエラーが発生します。

何らかの理由がありますか?

答えて

1

ケースクラスの移動宣言は範囲外です!

package main.scala.UserAnalytics 

// case class *outside* the main object 
case class User(name: string, dept: String) 

object UserAnalytics extends App { 
    ... 
    ds = df.map { row => User(row.getString(0), row.getString(1)) } 
} 

コード構造は、次にようになります

関連する問題