【问题标题】:spark-jobserver serialzation formatspark-jobserver 序列化格式
【发布时间】:2016-04-11 11:33:50
【问题描述】:

开始使用 spark-jobserver 我了解到数据帧可以像 Spark flattening out dataframes 一样展平,但这仍然不能满足 https://github.com/spark-jobserver/spark-jobserver#job-result-serialization

如果这是我从 spark 得到的结果

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

如何将其映射到合适的格式? (有用的序列化) 如何添加其他字段?

尝试使用如下数组:Array([1,2], [3,4]) 只会导致错误。

目前我得到以下基于Spark flattening out dataframes的序列化:

 "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。

据我了解,我需要将所有结果解析为自定义类。我将如何实现这一目标?

【问题讨论】:

    标签: json scala serialization apache-spark spark-jobserver


    【解决方案1】:

    答案是,目前显然只支持字符串映射,因此这个Convert DataFrame to RDD[Map] in Scala 会导致干净的序列化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多