gpt4 book ai didi

json - Spark read.json 不考虑 python 中的 bool 值

转载 作者:行者123 更新时间:2023-12-05 06:32:50 24 4
gpt4 key购买 nike

我一直在尝试遵循官方文档 here 中的将 JSON 字符串转换为 dataframe 的示例。 .

以下情况可以正常工作:

jsonStrings = ['{"name":"Yin","address":{"city":"Columbus","state":true}}']
otherPeopleRDD = sc.parallelize(jsonStrings)
otherPeople = spark.read.json(otherPeopleRDD)
otherPeople.show()

====== OUTPUT =======
+----------------+----+
| address|name|
+----------------+----+
|[Columbus, true]| Yin|
+----------------+----+

root
|-- address: struct (nullable = true)
| |-- city: string (nullable = true)
| |-- state: boolean (nullable = true)
|-- name: string (nullable = true)

但是当我尝试传递 bool 值 True(适用于 python)时出现错误:

jsonStrings = ['{"name":"Yin","address":{"city":"Columbus","state":True}}']
otherPeopleRDD = sc.parallelize(jsonStrings)
otherPeople = spark.read.json(otherPeopleRDD)
otherPeople.show()

====== OUTPUT =======
+--------------------+
| _corrupt_record|
+--------------------+
|{"name":"Yin","ad...|
+--------------------+

root
|-- _corrupt_record: string (nullable = true)

给出一些上下文。我正在调用 REST api 以使用 python 中的 requests 库获取 JSON 数据。然后我得到在响应中调用 .json() 的 json 字符串。这给了我一个 json 字符串,其中 bool 值像在 python 中一样大写。 (真变成真,假变成假)。我认为这是期望的行为,但是当将此 json 传递给 spark 时,它会提示 JSON 字符串的格式,如上所示。

resp = requests.get(url, params=query_str, cookies=cookie_str)
jsonString = resp.json()

我已经通读了文档并在网上进行了搜索,但没有找到任何可能有帮助的信息。有人可以帮我解决这个问题吗?

更新:我找到了一种可能的解释。这可能是因为 python 中的 json 库提供了 JSON 编码和解码。 Link但这仍然不能解释为什么 pyspark 无法识别 python json 编码。

最佳答案

使用json模块:

import json

spark_friendly_json = json.dumps(resp.json())
otherPeopleRDD = sc.parallelize(spark_friendly_json)
otherPeople = spark.read.json(otherPeopleRDD)

关于json - Spark read.json 不考虑 python 中的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51052695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com