清理spark中的json对象?

k4aesqcs  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(377)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

4个月前关门了。
改进这个问题
我的任务是在spark中重新格式化1亿个json对象。输入json对象的示例。

{
  name: 123,
  schools: [
    {
      Id: 1,
      deleted: 1,
      ...
    },
    {
      Id: 2,
      deleted: 0,
      ...
    }
  ]
}

例外输出:

{
  name: 123,
  schools: [
    {
      Id: 2,
      deleted: 0,
      ...
    }
  ]
}

删除学校w/deleted 1。有没有可能在spark中这样做?我对它很陌生,任何帮助都很感激

ifsvaxew

ifsvaxew1#

我想让你读一读关于Spark变换的书
你的任务可以很容易地完成使用Spark。如果您使用的是scala语言,那么创建一个case类来定义您的输入模式。或者,如果您使用的是javalang,那么就创建一个可序列化的dto。
scala抽象代码:

case class Data( // define schema fields here)

   import spark.implicits._
   val inputDF = spark.read.json(inputFile).as[Data]
   val finalDF = inputDF.map(data => {
      data.schools = data.schools.filter(x => !x.deleted)
      data
      //or you can create new object and update school object in ti
   })
   finalDF.write.json(oploc)

如果您有嵌套对象,也可以阅读spark编码器,因为我们需要明确地告诉spark如何编码和解码此类复杂对象。

相关问题