我是Spark 2.0的新用戶,並且在我們的代碼庫中使用數據集。我有點注意到我們需要在我們的代碼中無處不在。例如:用於導入各處火花隱含的解決方法
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")
}
}
我想問問是什麼,如果有一個更清潔的方式來能夠做到
ds.map(e => "SomeString")
不導入implicits在每一個功能,我做的地圖嗎?如果我不進口的話,我得到以下錯誤:
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