使用Scala将多行日志转换为JSON

问题描述

我需要创建一个基于scala的转换,以将日志文件(以下示例)处理为基于json的格式。

“ START”和“ END”之间的数据始终基于键/值,并且存在有限(〜30个)可能的键-都是可选的。

START
FirstName=John
LastName=Parker
City=Sydney
State=NSW
Country=Australia
END
START
FirstName=John
City=Melbourne
Country=Australia
END
START
FirstName=Peter
LastName=Parker
Country=France
END

输出(或转换后的)格式应类似于:

[
  {
    "FirstName": "John","LastName": "Parker","City": "Sydney","State": "NSW","Country": "Australia"
  },{
    "FirstName": "John","City": "Melbourne",{
    "FirstName": "Peter","Country": "France"
  }
]

我是scala / spark的新手。但是,到目前为止,我已经能够提出如下一些逻辑

  var logBlockMap = new java.util.HashMap[String,String]()
  var full_json_list = new java.util.ArrayList[String]()
  val parsedRDD = dataRDD
    .foreach{
      case "START"=>
        //Initialize data collection
        logBlockMap.clear()
      case "END" =>
        //Add the map data
        val json_string  = mapper.writeValueAsstring(logBlockMap)
        full_json_list.add(json_string)
      case line =>
        val newline = line.split("=")
        logBlockMap.put(newline(0),newline(1))
    }

但是,随着full_json_list变得越来越大,事情迅速瓦解,处理大型文件时,我很快遇到了麻烦。

解决这个问题的理想方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)