私はSpark 2.0を初めて使用し、コードベースでデータセットを使用しています。私はちょっと気付いて、import spark.implicits._
私たちのコードのどこにでも必要です。例えば:私はマップを行うすべての関数で暗黙にインポートせずにどこでもspark implicitsをインポートするための回避策
ds.map(e => "SomeString")
を行うことができるようにするクリーンな方法があります場合、私はお聞きしたかった何
File A
class A {
def job(spark: SparkSession) = {
import spark.implcits._
//create dataset ds
val b = new B(spark)
b.doSomething(ds)
doSomething(ds)
}
private def doSomething(ds: Dataset[Foo], spark: SparkSession) = {
import spark.implicits._
ds.map(e => 1)
}
}
File B
class B(spark: SparkSession) {
def doSomething(ds: Dataset[Foo]) = {
import spark.implicits._
ds.map(e => "SomeString")
}
}
はありますか?私はそれをインポートしない場合、私は次のエラーを取得する:ビットではなく、各機能のclass
またはobject
内のインポートを行うことであろう役立つだろう
Error:(53, 13) 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.
私の答えはいくつかの追加情報で更新されました。あなたにフォローアップの質問があるかどうか尋ねることをためらってください。 – Shaido