Iam目前有一个json对象说是student.json。结构看起来像这样
{"serialNo":"1","name":"Rahul"}
{"serialNo":"2","name":"Rakshith"}
case class Student(serialNo:Int,name:String)
student.json是一个巨大的文件,我计划通过一个火花工作解析。和片段:
import play.api.libs.json.{ Json, JsObject, JsString }
.....
.....
for(jsonLine <-sc.textFile("student.json")
student<- Json.parse(jsonLine).asOpt[Student])
yield(student.serialNumber -> student.name)
有更好的方法吗?
答案 0 :(得分:1)
如果student.json
是一个巨大的文件,并且每一行只是一个有效的 json对象,那么你应该这样做:
val myRdd = sc.textFile("student.json").map(l=> Json.parse(l).asOpt[Student])
如果您想将RDD送到本地主人,您可以:
val students = myRdd.collect()..// then you can do operate it in the old fashion way.
我看到您正在导入来自 Play Framework 的play.api.libs.json
。我不认为在Web应用程序中运行Spark程序是一个好主意......