首页 > 解决方案 > 将列元素添加到 Dataframe Scala Spark

问题描述

我有两个数据框,我想将一个添加到另一个的所有行中。我的数据框是这样的:

id | name | rate 
 1 |   a  |  3
 1 |   b  |  4
 1 |   c  |  1
 2 |   a  |  2
 2 |   d  |  4
name 

a
b
c
d
e

我想要这样的结果:

id | name | rate 
 1 |   a  |  3
 1 |   b  |  4
 1 |   c  |  1
 1 |   d  | null
 1 |   e  | null
 2 |   a  |  2
 2 |   b  | null
 2 |   c  | null
 2 |   d  |  4
 2 |   e  | null

我怎样才能做到这一点?

标签: scaladataframeapache-spark

解决方案


它似乎不仅仅是一个简单的连接。

val df = df1.select("id").distinct().crossJoin(df2).join(
    df1,
    Seq("name", "id"),
    "left"
).orderBy("id", "name")

df.show
+----+---+----+
|name| id|rate|
+----+---+----+
|   a|  1|   3|
|   b|  1|   4|
|   c|  1|   1|
|   d|  1|null|
|   e|  1|null|
|   a|  2|   2|
|   b|  2|null|
|   c|  2|null|
|   d|  2|   4|
|   e|  2|null|
+----+---+----+

推荐阅读