我有如下所示的dataframe,它有键对和值对。
| Name | Age | Location
| abc | 12 | loc1
| def | 13 | loc2
我想用它创建一个json字符串。当我执行一个.toJSON()
并收集时,我将从那个dataframe获取以下json字符串
[{"name":"abc","age":12,"location":"loc1"},{"name":"def","age":13,"location":"loc2"}]
是否有可能只得到json的值部分而不是像下面这样得到键呢?
预期产出:
[{"abc",12,"loc1"},{"def",13,"loc2"}]
用于将dataframe转换为json的代码。
df.toJSON().collect()
如果我们能在PYSPARK中得到一些解决方案,那就太好了。
发布于 2021-12-21 14:20:52
您期望的结果不是一个有效的JSON,因此不能在dataframe或to_json
函数上使用to_json
。
您可以使用format_string
函数来尝试这样的方法来获得您想要的结构:
from pyspark.sql import functions as F
result = df.groupBy().agg(
F.collect_list(
F.format_string('{"%s", %s, "%s"}', *df.columns)
).alias("records")
).first()["records"]
print(result)
# ['{"abc", 12, "loc1"}', '{"def", 13, "loc2"}']
https://stackoverflow.com/questions/70436756
复制相似问题