【发布时间】:2020-10-23 11:59:41
【问题描述】:
我正在尝试将具有此结构的文档映射到数据框。
root
|-- Id: "a1"
|-- Type: "Work"
|-- Tag: Array
| |--0: Object
| | |-- Tag.name : "passHolder"
| | |-- Tag.value : "Jack Ryan"
| | |-- Tag.stat : "verified"
| |-- 1: Object
| | |-- Tag.name : "passNum"
| | |-- Tag.value : "1234"
| | |-- Tag.stat : "unverified"
|-- version: 1.5
通过使用explode_outer 分解数组、展平结构并使用.col + alias 重命名,数据框将如下所示:
df = df.withColumn("Tag",F.explode_outer("Tag"))
df = df.select(col("*"),
.col("Tag.name").alias("Tag_name"),
.col("Tag.value").alias("Tag_value"),
.col("Tag.stat").alias("Tag_stat")).drop("Tag")
+--+----+-----------+-----------+---------+---------+
|Id|Type| Tag_name | Tag_value |Tag_stat | version |
+--+----+-----------+-----------+---------+---------+
a1 Work passHolder Jack Ryan verified 1.5
a1 Work passNum 1234 unverified 1.5
我正在尝试重新组织 df 结构,使其更易于查询,方法是将某些行元素作为列名并用相关值填充它。 任何人都可以帮助提供达到所需输出格式所需的指针/步骤,如下所示?非常感谢您的建议。
目标格式:
+--+----+-----------------+-----------------+-------------+------------+--------+
|Id|Type| Tag_passHolder | passHolder_stat | Tag_passNum |passNum_stat||version|
+--+----+-----------------+-----------------+-------------+------------+--------+
a1 Work Jack Ryan verified 1234 unverified 1.5
【问题讨论】:
-
听起来像一个简单的连接。你试过了吗?
-
@Steven 我没有。你能帮助扩展如何使用连接来完成目标 sparkdf 吗?
标签: python pyspark apache-spark-sql