ash*_*arg 17 json scala apache-spark apache-spark-sql
我有一个巨大的Json文件,其中一小部分如下:
{
"socialNews": [{
"adminTagIds": "",
"fileIds": "",
"departmentTagIds": "",
........
........
"comments": [{
"commentId": "",
"newsId": "",
"entityId": "",
....
....
}]
}]
.....
}
Run Code Online (Sandbox Code Playgroud)
我在社交新闻中应用了侧视图片段如下:
val rdd = sqlContext.jsonFile("file:///home/ashish/test")
rdd.registerTempTable("social")
val result = sqlContext.sql("select * from social LATERAL VIEW explode(socialNews) social AS comment")
Run Code Online (Sandbox Code Playgroud)
现在我想将此结果(DataFrame)转换回json并保存到文件中,但我无法找到任何scala api进行转换.是否有任何标准库可以做到这一点或某种方式来解决它?
Nik*_*ita 26
val result: DataFrame = sqlContext.read.json(path)
result.write.json("/yourPath")
Run Code Online (Sandbox Code Playgroud)
该方法write位于DataFrameWriter类中,您可以在DataFrame对象上访问它.只需确保您的rdd是类型DataFrame而不是弃用类型SchemaRdd.您可以使用显式提供类型定义val data: DataFrame或强制转换为dataFrame toDF().
MrC*_*ine 21
如果你有一个DataFrame,那么有一个API可以转换回包含json记录的RDD [String].
val df = Seq((2012, 8, "Batman", 9.8), (2012, 8, "Hero", 8.7), (2012, 7, "Robot", 5.5), (2011, 7, "Git", 2.0)).toDF("year", "month", "title", "rating")
df.toJSON.saveAsTextFile("/tmp/jsonRecords")
df.toJSON.take(2).foreach(println)
Run Code Online (Sandbox Code Playgroud)
这应该从Spark 1.4开始提供.在您创建的结果DataFrame上调用API.
| 归档时间: |
|
| 查看次数: |
49646 次 |
| 最近记录: |