将数据帧保存为Spark Scala中特定结构中的JSON

时间:2017-06-09 04:30:40

标签: json scala apache-spark dataframe

我有一个dataframe df,可以将json文件保存为以下结构:{"id":"1234567890","score":123.0,"date":yyyymmdd}

对于第一个实例,我将其保存如下:

df.write.format("json").save("path")

此df需要在json

结构中保存为id::1234567890\t{"id":"1234567890","score":123.0,"date":yyyymmdd}个文件

我尝试了各种各样的方法,但无法做到。我们如何以所需的格式保存它?

Spark version: 1.6.0
Scala version: 2.10.6

1 个答案:

答案 0 :(得分:1)

这不是json格式。你最好使用rdd,然后将其转换为自定义格式。

final case class LineOfSomething(id: String, score: BigDecimal, date: String)
import sqlContext.implicits._
df
  .as[LineOfSomething]
  .rdd
  .mapPartitions(lines => {
    val mapper = new com.fasterxml.jackson.databind.ObjectMapper()
    mapper.registerModule(com.fasterxml.jackson.module.scala.DefaultScalaModule)
    lines.map(line => {
      val json = mapper.writeValueAsString(line)
      s"id::${line.id}\t$json"
    })
  })
  .saveAsTextFile(output)