如何在pyspark中转换这个嵌套的json? [复制]

Posted

技术标签:

【中文标题】如何在pyspark中转换这个嵌套的json? [复制]【英文标题】:How to convert this nested json in pyspark? [duplicate] 【发布时间】:2019-03-15 05:27:43 【问题描述】:

df.printSchema()

root
|-- country: struct (nullable = true)
|    |-- a: long (nullable = true)
|    |-- b: string (nullable = true)
|    |-- c: string (nullable = true)
|    |-- d: string (nullable = true)

Row(trustset=Row(a=1, b='Melbourne is in Aus', c=None, d='Sydney'))

df.show()

+--------------------+
|            trustset|
+--------------------+
|[1, Melbourne is ...|
+--------------------+

我想要的输出必须是

+------+------------------------+-----+--------+
|   a  |    b                   |  c  |   d    |
+------+------------------------+-----+--------+
|   1  |  Melbourne is in Aus   | None| Sydney |
+------+------------------------+-----+--------+

已经获得信任,因为该列需要以 subs 作为主要列

【问题讨论】:

df.select(df.col("trustset.*")) 见***.com/questions/38753898/… 用过这个df.select(df.columns("trustset.*"))得到TypeError: 'list' object is not callable用这个df.select(df.col("trustset.*"))得到AttributeError: 'DataFrame' object has no attribute 'col' 没有嵌套 JSON 这样的东西。 JSON 是一些数据结构的文本表示。而且问题中没有 JSON。 【参考方案1】:

DataFrame的select可以帮助你选择struct中的嵌套字段

from pyspark.sql.functions import col
df.select(col("trustset.*")).show()

有一个类似的问题:How to flatten a struct in a Spark dataframe?

【讨论】:

以上是关于如何在pyspark中转换这个嵌套的json? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 pyspark 将 spark 数据帧转换为嵌套 JSON

Pyspark 将嵌套结构字段转换为 Json 字符串

将嵌套的 Json 转换为 Pyspark 中的数据框

如何使用 pyspark 在 aws 胶水中展平嵌套 json 中的数组?

从 Pyspark 中的嵌套 Json-String 列中提取模式

在 Pyspark 代码中读取嵌套的 Json 文件。 pyspark.sql.utils.AnalysisException: