在spark(scala)环境解析Json⽂件成为数组或对象。
因为sparksession读取⽂件会⾃动⽣成dataframe⽂件,虽然可以逐条解析,但是⼗分不⽅便,并且需要预知json格式,延展性⽐较差,所以使⽤scala读取本地⽂件的⽅法转化为json字符串,再解析为数组。
json⽂件格式:[ { "param": "id1", "method": "11111", "seq": "22222", "relatedseq": "33333", "parametertype": "44444", "value": "55555" }, { "param": "id2", "method": "11111", "seq": "22222", "relatedseq": "33333", "parametertype": "44444", "value": "55555" }, { "param": "id3", "method": "11111", "seq": "22222", "relatedseq": "33333", "parametertype": "44444", "value": "55555" }, { "param": "id4", "method": "11111", "seq": "22222", "relatedseq": "33333", "parametertype": "44444", "value": "55555" } ]
因为要做⼀个通⽤的⽅法所以对json格式做了修改,适合解析成为⼀个array。
ample
import com.alibaba.fastjson.JSON
import org.apache.spark.sql.SparkSession
import scala.io.Source
object test3 {
case class JsonClass(param: String, method: String, seq: String, relatedseq: String, parametertype: String, value: String)
def main(args: Array[String]): Unit = {
// val spark = SparkSession.builder().master("local[*]").getOrCreate()
val source = Source.fromFile("./in/test.json", "UTF-8")
val lines = Lines().toArray
val sb = new StringBuilder
lines.foreach(i => {
sb ++= i.mkString
})
val json = JSON.String(), classOf[JsonClass]).toArray
json.foreach(println)
}
}
for(i<-0 until json.length){
val obj=json(i).asInstanceOf[JsonClass]
hod+" "+obj.param+" "+obj.parametertype+" "+obj.value)
}
session如何设置和读取

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。