Comment convertir DataFrame en Dataset dans Apache Spark en Java?
Je peux convertir DataFrame de Dataset en Scala très facile:
case class Person(name:String, age:Long)
val df = ctx.read.json("/tmp/persons.json")
val ds = df.as[Person]
ds.printSchema
mais dans la version de Java je ne sais pas comment convertir un Dataframe de Dataset? Une Idée?
mon effort est:
DataFrame df = ctx.read().json(logFile);
Encoder<Person> encoder = new Encoder<>();
Dataset<Person> ds = new Dataset<Person>(ctx,df.logicalPlan(),encoder);
ds.printSchema();
mais le compilateur dire:
Error:(23, 27) java: org.apache.spark.sql.Encoder is abstract; cannot be instantiated
Édité(Solution):
solution basée sur @Leet-Falcon réponses:
DataFrame df = ctx.read().json(logFile);
Encoder<Person> encoder = Encoders.bean(Person.class);
Dataset<Person> ds = new Dataset<Person>(ctx, df.logicalPlan(), encoder);
source d'informationauteur Milad Khajavi
Vous devez vous connecter pour publier un commentaire.
Officiel Étincelle docs suggèrent en Dataset API suivantes:
Encodeurs peuvent être composées en n-uplets:
Ou construits à partir de Java Beans par Codeurs#bean:
Si vous voulez convertir un générique DF pour un jeu de données en Java, vous pouvez utiliser RowEncoder classe comme ci-dessous