Ich habe eine Reihe von pojos in externen Jar, ich wollte Dataset aus diesen Objekten erstellen. Wenn ich Dataset aus Scala-Fall-Klasse erstellen, kann ich Dataset wie erwartet erstellen. Wenn ich versuche, dasselbe mit JAVA-Objekt zu tun, gibt es alle Daten in einer Spalte als ein Objekt.Erstelle Spark-Datensatz von JAVA-Objekt in Scala, Spark 1.6
case class patientDiagnosis(patientId: Long, visitId: Long, diagnosisCode: String, isPrimaryDiagnosis: String, patientDiagnosisId: Long, sourceSystemUniqueIdentifier: String, diagnosisCodeSystem: String) {}
println("case Dataset from scala object :")
joinDf.as[patientDiagnosis].show()
OUTPUT:
case Dataset from scala object :
+---------+-------+-------------+------------------+------------------+----------------------------+-------------------+
|patientId|visitId|diagnosisCode|isPrimaryDiagnosis|patientDiagnosisId|sourceSystemUniqueIdentifier|diagnosisCodeSystem|
+---------+-------+-------------+------------------+------------------+----------------------------+-------------------+
| 1388158|1764555| 296.20| 1| 1247383| 1247383| ICD9|
+---------+-------+-------------+------------------+------------------+----------------------------+-------------------+
Wenn ich versuche, dies in Java zu tun, gibt es unten Ausgang:
JAVA Object:
public class PatientDiagnosis implements Serializable{
private static final long serialVersionUID = -7971192387675901350L;
private long patientId;
private long visitId;
private String diagnosisCode;
private String isPrimaryDiagnosis;
private long patientDiagnosisId;
private String sourceSystemUniqueIdentifier;
private int isDeleted;
private String diagnosisCodeSystem;
}
scala code:
import sqlContext.implicits._
val p:Encoder[com....PatientDiagnosis] = Encoders.bean(classOf[com....PatientDiagnosis])
println("case Java Encoder :")
joinDiagnf.as[com....PatientDiagnosis](p).show(false)
OUTPUT:
case Java Encoder :
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+---------+------------------+------------------+---------+----------------------------+-------+
|diagnosisCode |diagnosisCodeSystem|isDeleted|isPrimaryDiagnosis|patientDiagnosisId|patientId|sourceSystemUniqueIdentifier|visitId|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+---------+------------------+------------------+---------+----------------------------+-------+
|PatientDiagnosis [patientId=0, visitId=1764555, diagnosisCode=296.20, isPrimaryDiagnosis=1, patientDiagnosisId=1247383, sourceSystemUniqueIdentifier=1247383, isDeleted=0, diagnosisCodeSystem=ICD9]|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+---------+------------------+------------------+---------+----------------------------+-------+
Bin ich jeden syntaktischen Fehler zu tun oder es nicht zu schaffen Dataset aus Java-Objekt in scala Funke Version 1.6 unterstützt.
Was ist das Schema von 'joinDiagnf'? –
Gleich wie pro Objekt – Kalpesh