Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Scala在spark中预打印JSON数据帧?_Scala_Apache Spark - Fatal编程技术网

如何使用Scala在spark中预打印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

我有一个数据帧,我想将其作为有效的json写入json文件:

我当前的代码如下所示:

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")
}