2017-10-19 1 views
0

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.

+0

Was ist das Schema von 'joinDiagnf'? –

+0

Gleich wie pro Objekt – Kalpesh

Antwort

0

Sorry mein Fehler, es gab richtige Ausgabe. Ich habe das vorher nicht bekommen, da die data.show-Ansicht keine korrekte Erklärung liefert. Wenn ich bestimmte Spalten ausgewählt habe, ist für die Spalten ein Wert erforderlich.

Verwandte Themen