ケースクラスTを使用して実装する必要があるScala特性を作成したいのですが、データをロードしてSpark Dataset私はScalaがTが大文字小文字クラスでなければならないことを知らないため、エンコーダを格納することができないというエラーを受けました。どのようにコンパイラに伝えることができますか?私はどこかで、Productについて言及すべきところを見てきましたが、そのようなクラスは定義されていません。これを行うための他の方法を自由に提案してください!Scalaでデータセットを作成する一般的なケースクラスを使用して特性を実装する方法
次のコードがありますが、エラーでコンパイルされません。42:エラー:データセットに格納されている型のエンコーダが見つかりません。プリミティブ型(INT、文字列など)と製品の種類(ケースクラス)sqlContext.implicits._ [INFO]の.asをインポートすることでサポートされている[T]
私はスパーク1.6.1
を使用していますコード:
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.{Dataset, SQLContext}
/**
* A trait that moves data on Hadoop with Spark based on the location and the granularity of the data.
*/
trait Agent[T] {
/**
* Load a Dataframe from the location and convert into a Dataset
* @return Dataset[T]
*/
protected def load(): Dataset[T] = {
// Read in the data
SparkContextKeeper.sqlContext.read
.format("com.databricks.spark.csv")
.option("header", header) // Use first line of all files as header
.option("inferSchema", "true") // Automatically infer data types
.option("delimiter", "|") // Deloitte always expects pipe as a delimiter
.option("dateFormat","yyyy-MM-dd") // Deloitte always expects this kind of Date format
.load("/iacc/eandis/landing/raw/" + location + "/2016/10/01/")
.as[T]
}
}
可能な複製http://stackoverflow.com/questions/34715611/why-is-the-error-unable-to-find-encoder-for-type-stored-in-a-dataset-when-enco http://stackoverflow.com/questions/38664972/why-is-unable-to-find-encoder-for-type-stored-in-a-dataset-when-creating-a-dat – Shankar