scala – Spark:分解结构的数据帧数组并附加id
发布时间:2020-12-16 18:42:03 所属栏目:安全 来源:网络整理
导读:我目前有一个带有id和列的数据帧,这是一个结构数组: root |-- id: integer (nullable = true) |-- lists: array (nullable = true) | |-- element: struct (containsNull = true) | | |-- text: string (nullable = true) | | |-- amount: double (nullable
我目前有一个带有id和列的数据帧,这是一个结构数组:
root |-- id: integer (nullable = true) |-- lists: array (nullable = true) | |-- element: struct (containsNull = true) | | |-- text: string (nullable = true) | | |-- amount: double (nullable = true) 这是一个包含数据的示例表: id | lists ----------- 1 | [[a,1.0],[b,2.0]] 2 | [[c,3.0]] 如何将上述数据帧转换为下面的数据帧?我需要“爆炸”数组并同时附加id. id | col1 | col2 ----------------- 1 | a | 1.0 1 | b | 2.0 2 | c | 3.0 编辑说明: 请注意,以下两个示例之间存在差异.第一个包含“一系列元素结构”.而后者只包含“一系列元素”. root |-- id: integer (nullable = true) |-- lists: array (nullable = true) | |-- element: struct (containsNull = true) | | |-- text: string (nullable = true) | | |-- amount: double (nullable = true) root |-- a: long (nullable = true) |-- b: array (nullable = true) | |-- element: long (containsNull = true) 解决方法
爆炸正是这个功能:
import org.apache.spark.sql.functions._ df.select($"id",explode($"lists")).select($"id",$"col.text",$"col.amount") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |