0

spark-jobserver を使い始めて、Sparkがデータフレームをフラット化するようにデータ フレームをフラット化できることを学びましたが、これはまだhttps://github.com/spark-jobserver/spark-jobserver#job-result-serializationを満たしません

これがスパークから得た結果である場合

Array([1364767200000,1.9517414004122625E15], [1380578400000,6.9480992806496976E16])

どうすればそれを適切な形式にマッピングできますか? (便利なシリアル化) フィールドを追加するにはどうすればよいですか?

次のような配列で遊んでみようとするとArray([1,2], [3,4])、エラーが発生するだけです。

現在、データフレームをフラット化する Sparkに基づいて、次のシリアル化を取得します。

 "result": "Map(1364767200000 -> 1.9517414004122625E15, 1380578400000 -> 6.9480992806496976E16)"

これは明らかにジョブサーバーによって「解析」されていません。

私が理解している限り、ネストされた配列 (からcollect) は正しくシリアル化できません。ただし、このマップはシリアライズ可能である必要があります。なにが問題ですか?

編集

適切に型指定されたリストを返す場合にのみ、Json エンコーディングが機能するようです。

  case class Student(name: String, age: Int)
List(Student("Torcuato", 27), Student("Rosalinda", 34))

結果は次のとおり"result": [["Torcuato", 27], ["Rosalinda", 34]]です。すでに

  val dataFrame: DataFrame = sql.createDataFrame(sql.sparkContext.parallelize(List(Student("Torcuato", 27), Student("Rosalinda", 34))))
    dataFrame.collect

"result": ["[Torcuato,27]", "[Rosalinda,34]"]奇妙な種類の Json を取得します。

問題を理解している限り、すべての結果をカスタム クラスに解析する必要があります。どうすればこれを達成できますか?

4

1 に答える 1

0

答えは、今のところ明らかに文字列のマップのみがサポートされているため、このConvert DataFrame to RDD[Map] in Scalaはクリーンなシリアライゼーションになるということです。

于 2016-04-14T09:38:54.157 に答える