2017-10-19 5 views
0

私は外部のjarファイルにpojosを設定しました。これらのオブジェクトからデータセットを作成したかったのです。 ScalaのケースクラスからDatasetを作成すると、期待通りにデータセットを作成することができます。 JAVAオブジェクトで同じことをしようとすると、すべてのデータが1つのオブジェクトとして1つの列に与えられます。私はJavaでこれをしようとするとcreate spark JAVAオブジェクトのデータセットfrom 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| 
+---------+-------+-------------+------------------+------------------+----------------------------+-------------------+ 

はそれが出力を下回るいます:

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]| 
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+---------+------------------+------------------+---------+----------------------------+-------+ 

は私がどんな構文ミスをやっているか、Scalaの火花で1.6バージョンをJavaオブジェクトからデータセットを作成するためにサポートされていません。

+0

'joinDiagnf'のスキーマは何ですか? –

+0

オブジェクトごとに同じ – Kalpesh

答えて

0

申し訳ありませんが私の間違い、それは正しい出力を与えていました。 dataset.showビューが適切な説明をしていないため、以前はこれを取得していませんでした。 特定の列を選択すると、列には値が必要です。