为了账号安全,请及时绑定邮箱和手机立即绑定

在 PySpark 中,如何根据另一个 DataFrame 中的查找来填充新列?

在 PySpark 中,如何根据另一个 DataFrame 中的查找来填充新列?

梵蒂冈之花 2022-03-09 21:21:14
Spark 和 PySpark 的新手,我试图通过在另一个 DataFrame 中查找信息来在 DataFrame 中添加一个字段/列。在过去的几个小时里,我一直在尝试阅读 RDD、DataFrame、DataSet、map、join 等,但这些概念对我来说仍然是新的,我仍然很难完全理解它们。例如,给定以下带有 ID 和角色的输入 DataFrame:+----+-------------+| ID | Role        |+----+-------------+|  1 | Author      ||  1 | Editor      ||  2 | Author      ||  2 | Publisher   ||  3 | Editor      ||  3 | Assistant   |+----+-------------+另一个输入 DataFrame 具有唯一的 ID 和名称映射:+----+-------------+| ID | Name        |+----+-------------+|  1 | John Smith  ||  2 | John Doe    ||  3 | Bob Jim Bob |+----+-------------+我需要以某种方式将此数据合并到单个输出 DataFrame 中,并添加 Name 列,如下所示:+----+-------------+-------------+| ID | Name        | Role        |+----+-------------+-------------+|  1 | John Smith  | Author      ||  1 | John Smith  | Editor      ||  2 | John Doe    | Author      ||  2 | John Doe    | Publisher   ||  3 | Bob Jim Bob | Editor      ||  3 | Bob Jim Bob | Assistant   |+----+-------------+-------------+两个输入表的实际数据量约为 200k+ 行。我最初的想法是在 ID + Role 表中添加一个新的 Name 列,然后遍历每一行并手动从 ID + Name 表中查找 Name 但这真的很慢,我肯定无法利用火花。再说一次,对这一切仍然很陌生,所以如果这是一个非常明显的问题,请原谅我。
查看完整描述

1 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

您可以在 pySpark 中合并两个 dataframeS,如下所示:


>>> df1.show()

+---+---------+

| ID|     Role|

+---+---------+

|  1|   Author|

|  1|   Editor|

|  2|   Author|

|  2|Publisher|

|  3|   Editor|

|  3|Assistant|

+---+---------+


>>> df2.show()

+---+-----------+

| ID|       Name|

+---+-----------+

|  1| John Smith|

|  2|   John Doe|

|  3|Bob Jim Bob|

+---+-----------+


>>> df3 = df2.join(df1,"ID")

>>> df3.show()

+---+-----------+---------+

| ID|       Name|     Role|

+---+-----------+---------+

|  1| John Smith|   Author|

|  1| John Smith|   Editor|

|  2|   John Doe|   Author|

|  2|   John Doe|Publisher|

|  3|Bob Jim Bob|   Editor|

|  3|Bob Jim Bob|Assistant|

+---+-----------+---------+

注意:我假设"ID"为外键,如有任何疑问,请发表评论。


查看完整回答
反对 回复 2022-03-09
  • 1 回答
  • 0 关注
  • 209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信