【问题标题】:How can I prettyprint a JSON Dataframe in spark with Scala?如何使用 Scala 在 Spark 中漂亮地打印 JSON Dataframe?
【发布时间】:2016-05-16 06:41:34
【问题描述】:

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

我当前的代码如下:

val df: DataFrame = myFun(...)
df.toJSON.saveAsTextFile( "myFile.json" )

输出的格式为:

{}{}{}

如何将文件内容组织为有效的 JSON?:

[{},{},{}]

【问题讨论】:

  • 仍在寻找。 toJSONwrite.json( 都只能将完整的 json 对象放在每一行上,因此您最终会得到一个由单个 json 对象组成的换行分隔文件,而不是一个有效的 json 文件,即:对象数组。

标签: scala apache-spark


【解决方案1】:

我使用 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")
}

丑陋且效率低下,但只要最终结果不是大数据量,我就可以做我想要的,在这种情况下,我无论如何都不想要一个合适的 json 文件。

【讨论】:

  • parseJson 不是字符串的成员,你在使用一些框架吗?
  • @GauravShah,是的,Spray JSON 库
【解决方案2】:

我正在使用这个(Python)

import json
from bson import json_util
from bson.json_util import dumps
with open('myJson.json', 'w') as outfile:
        json.dump(myDF, outfile)

我相信您会找到Scala 的替代方案。

【讨论】:

    猜你喜欢
    • 2017-12-10
    • 2017-12-15
    • 2018-05-10
    • 2013-10-03
    • 2011-08-05
    相关资源
    最近更新 更多