【发布时间】:2021-12-19 00:00:31
【问题描述】:
我正在使用一个嵌套的 json 文件,该文件包含我需要分解的多个级别的数组。 我注意到我创建的列中的值在我分解一个与我想存储在所述列中的值相同级别的数组后发生了变化。这是一个可视化的示例:
jsonDF = jsonDF.withColumn("values_level1", explode("data.values"))
.withColumn("name_level1", col("values_level1.name"))
直到这里一切都很好,列“name_level1”包含我想在稍后阶段过滤的某些值。当我继续时问题就开始了
.withColumn("values_level2", explode("values_level1.values"))
因为现在我在“name_level1”列中的值已经改变,我不再找到以后要过滤的值。
这是可以预期的,我只是在概念上还没有理解(我对 Spark 很陌生......)?我可以以某种方式“保留”“name_level1”中的原始值吗?
提前非常感谢!
为什么当我分解“值”时“名称”会改变?
【问题讨论】:
-
我想你要炸开'data'里的值
.withColumn("values_level2", explode("data.values"))values_level1已经在第一步炸开 -
您好 Munesh,感谢您的回复。我确实在第一步中分解了“data.values”并将其称为“values_level1”。您在屏幕截图中看到的是“values_level1”列的结构。我想在不改变 values_level1.name 的情况下分解 values_level1.values
标签: json apache-spark pyspark apache-spark-sql nested