Spark解析多行嵌套JSON数组得到数组列而非单行,如何提取目标字段?
问题原因
data.data3本身为数组类型,直接访问data.data3.info2会生成嵌套数组结构,仅对该字段做一次explode无法完全打平内层元素,才会出现结果为数组列的情况。
修正后代码
首先确保已引入所需函数:
from pyspark.sql.functions import explode, col
调整解析逻辑为两次explode打平嵌套数组:
df = json.select( # 第一次炸开外层data3数组,每个数组元素对应一行 explode("data.data3").alias("data3_item") ).select( # 第二次炸开每个data3元素下的info2数组 explode("data3_item.info2").alias("info2_item") ).select( # 提取对应字段即可得到单行单条的结果 col("info2_item.info.test1").alias("test1"), col("info2_item.info.test2").alias("test2") )
运行上述代码即可得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者inspiredd
相关产品推荐
相关产品推荐

