サード パーティのライブラリで定義されている既存のドメイン オブジェクト、つまり HAPI-FHIR のPatient
オブジェクトを使用して、次のように厳密に型指定された Spark を作成しようとしていますDataSet[Patient]
。
scala> val patients = sc.loadFromMongoDB(ReadConfig(Map("uri" -> "mongodb://mongodb/fhir.patients")))
patients: com.mongodb.spark.rdd.MongoRDD[org.bson.Document] = MongoRDD[0] at RDD at MongoRDD.scala:47
scala> val patientsDataSet = patients.toDS[Patient](classOf[Patient])
しかし、上記の RDD#toDS 呼び出しを行うと、非常に長いStackOverflowError
.
完全なスタック トレースはこちら: https://gist.github.com/vratnagiri-veriskhealth/6dcec9dbc6f74308019ab16c8d278a9b
上で参照したドメイン オブジェクトの複雑さを考えると、これはばかげた用事かもしれないと思いますが、私が scala の初心者であることを考えると、これを取得する可能性のある簡単な調整を見逃していないことを確認したいと思います。私がこの追求を放棄する前に働いています。
スタックトレースの一部は次のとおりです。
java.lang.StackOverflowError
at org.spark-project.guava.collect.ImmutableCollection.<init>(ImmutableCollection.java:48)
at org.spark-project.guava.collect.ImmutableSet.<init>(ImmutableSet.java:396)
at org.spark-project.guava.collect.ImmutableMapEntrySet.<init>(ImmutableMapEntrySet.java:35)
at org.spark-project.guava.collect.RegularImmutableMap$EntrySet.<init>(RegularImmutableMap.java:174)
at org.spark-project.guava.collect.RegularImmutableMap$EntrySet.<init>(RegularImmutableMap.java:174)
at org.spark-project.guava.collect.RegularImmutableMap.createEntrySet(RegularImmutableMap.java:170)
at org.spark-project.guava.collect.ImmutableMap.entrySet(ImmutableMap.java:385)
at org.spark-project.guava.collect.ImmutableMap.entrySet(ImmutableMap.java:61)
at org.spark-project.guava.reflect.TypeResolver.where(TypeResolver.java:97)
at org.spark-project.guava.reflect.TypeResolver.accordingTo(TypeResolver.java:65)
at org.spark-project.guava.reflect.TypeToken.resolveType(TypeToken.java:266)
at org.spark-project.guava.reflect.TypeToken$1.getGenericReturnType(TypeToken.java:469)
at org.spark-project.guava.reflect.Invokable.getReturnType(Invokable.java:109)
at org.apache.spark.sql.catalyst.JavaTypeInference$$anonfun$2.apply(JavaTypeInference.scala:110)
at org.apache.spark.sql.catalyst.JavaTypeInference$$anonfun$2.apply(JavaTypeInference.scala:109)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
at org.apache.spark.sql.catalyst.JavaTypeInference$.org$apache$spark$sql$catalyst$JavaTypeInference$$inferDataType(JavaTypeInference.scala:109)
at org.apache.spark.sql.catalyst.JavaTypeInference$.org$apache$spark$sql$catalyst$JavaTypeInference$$inferDataType(JavaTypeInference.scala:95)
at org.apache.spark.sql.catalyst.JavaTypeInference$$anonfun$2.apply(JavaTypeInference.scala:111)
at org.apache.spark.sql.catalyst.JavaTypeInference$$anonfun$2.apply(JavaTypeInference.scala:109)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108)
ありがとう!