【问题标题】:reading json file in a dataframe and converting it back to exact json读取数据框中的 json 文件并将其转换回精确的 json
【发布时间】:2021-09-02 11:12:53
【问题描述】:

我有一个要求,我需要读取 s3 存储桶中存在的多个 Json 文件,我正在使用以下代码

path = "s3://some-bucket/some-key/*.json"
df = spark.read.json(path)

现在,我在这个 Dataframe 中有 Json 数据,但是如何将其转换回与读取它时完全相同的 Json 格式?我知道我可以将此 spark df 转换为 pandas df,但我尝试了 pandas orient 参数的所有选项,但没有一个给我完全相同的 Json。

【问题讨论】:

    标签: python json pandas


    【解决方案1】:

    df.write.json 会将数据帧写入 json 文件。如果下面没有帮助,请分享有关 json 格式的更多详细信息。

    >>> df = spark.read.json('/home/tm/json_sample.json')
    >>> df.show()
    +--------------------+
    |            employee|
    +--------------------+
    |[true, sonoo, 56000]|
    +--------------------+
    
    >>> df.write.json('/home/tm/json_sample1.json')
    

    json_sample.json 中的数据

    {"employee":{"married":true,"name":"sonoo","salary":56000}}
    

    输出文件中的数据(part-00000-d319741f-7fb1-416a-8906-78ebfc5a1df1-c000.json)

    {"employee":{"married":true,"name":"sonoo","salary":56000}}
    

    【讨论】:

    • 谢谢@Chaitra!这似乎有效,但是否可以将其存储在变量中?这样我就可以使用那个变量了吗?我的意思是,我读取了 json 文件并将内容存储在一个变量中,其格式与 json 文件中的格式完全相同。 ??
    • 是的,这是可能的。但是,如果您想将内容存储在变量中,那么您将不得不使用不推荐的“收集”,因为在处理较大的数据集时它不可行。
    • 是的,Chaitra,你是对的!但我只是在探索它,如果我们可以存储它。无论如何谢谢你的帮助!!仅供参考,当尝试使用 collect() 时,它会将数据作为列表返回给我。我尝试了下面的一个,它给了我完全相同的 json 格式数据。 my_variable = json.loads(df.toJSON().first())
    • 嗨 @hegde 你能帮我解决这个问题吗stackoverflow.com/questions/69083312/…
    猜你喜欢
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 2019-07-08
    • 2021-08-28
    • 2014-11-23
    • 1970-01-01
    • 2023-04-08
    • 2021-10-14
    相关资源
    最近更新 更多