将一系列Json对象转换为一个Rdd

时间:2016-03-02 09:45:59

标签: scala playframework apache-spark

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)

有更好的方法吗?

1 个答案:

答案 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程序是一个好主意......