如何解决使用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 举报,一经查实,本站将立刻删除。