如何使用Scala在spark中预打印JSON数据帧?
我有一个数据帧,我想将其作为有效的json写入json文件: 我当前的代码如下所示:如何使用Scala在spark中预打印JSON数据帧?,scala,apache-spark,Scala,Apache Spark,我有一个数据帧,我想将其作为有效的json写入json文件: 我当前的代码如下所示: val df: DataFrame = myFun(...) df.toJSON.saveAsTextFile( "myFile.json" ) 输出的格式为: {}{}{} 如何将文件内容组织为有效的JSON [{},{},{}] 我正在使用这个(Python) 我相信您会找到另一种选择,即使用Spray JSON的Scala我的解决方案: def apply(df: DataFrame): Optio
val df: DataFrame = myFun(...)
df.toJSON.saveAsTextFile( "myFile.json" )
输出的格式为:
{}{}{}
如何将文件内容组织为有效的JSON
[{},{},{}]
我正在使用这个(Python)
我相信您会找到另一种选择,即使用Spray JSON的
Scala
我的解决方案:
def apply(df: DataFrame): Option[String] = {
val collectedData = df.toJSON.coalesce(1).collect().mkString("\n")
val json = "[" + ("}\n".r replaceAllIn (collectedData, "},\n")) + "]"
val pretty = json.parseJson.prettyPrint
Some(s"$pretty\n")
}
丑陋且低效,但只要最终结果不是大数据量,我就不会想要一个合适的json文件。仍在寻找
toJSON
和write.json(
两者都只能在每一行上放置完整的json对象,因此最终得到的是一个以换行符分隔的单个json对象文件,而不是一个有效的json文件,即:一个对象数组。parseJson
不是字符串的成员,您在使用什么框架吗?@Gauravsha,是的,Spray json库
def apply(df: DataFrame): Option[String] = {
val collectedData = df.toJSON.coalesce(1).collect().mkString("\n")
val json = "[" + ("}\n".r replaceAllIn (collectedData, "},\n")) + "]"
val pretty = json.parseJson.prettyPrint
Some(s"$pretty\n")
}