PySpark 数据帧转换 - 从 JSON 中获取价值部分

PySpark dataframe transformation - to get value part from JSON

我有一个如下所示的数据框,其中包含键值对。

| Name |  Age | Location
| abc  |  12  | loc1
| def  |  13  | loc2

我想用它创建一个 json 字符串。当我执行 .toJSON() 并收集时,我从该数据帧

中获取以下 json 字符串
[{"name":"abc","age":12,"location":"loc1"},{"name":"def","age":13,"location":"loc2"}]

是否可以只获取 json 的值部分而不是像下面这样获取键?

预期输出:

[{"abc",12,"loc1"},{"def",13,"loc2"}]

我用来将数据帧转换为 json

的代码
df.toJSON().collect()

如果我们能在 PYSPARK 中得到一些解决方案就太好了。

您期望的结果不是有效的 JSON,因此您不能在数据帧或 to_json 函数上使用 toJSON()

您可以尝试使用 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"}']