【发布时间】:2022-01-21 22:01:12
【问题描述】:
我正在尝试加入两个 apache spark sql DataFrame 并将第一个数据帧的列值替换为另一个。 例如:
Df1:
col1 | col2 | other columns .... say (col-x, col-y, col-z)
------------ |--------------------------------
x | a |random values
y | b |random values
z | c |random values
Df2:
col1 | col3 | other columns .. say (col-a, col-b, col-c)
-------------|--------------------------------
x | a1 |different random values
y | b1 |different random values
w | w1 |different random values
resultant dataframe should be
DF:
col1 | col2 | other columns of DF1 (col-x. col-y, col-z)
-------------|-------------------------------
a1 | a |random values
b1 | b |random values
z | c |random values
我需要执行左连接并将 DF1.col1 的值替换为 DF2.col3,只要 DF1.col1 = DF2.col1。 我不知道该怎么做。此外,从上面的示例中可以看出,DF1 除了“col1”和“col2”之外还有更多的列,我不能对所有列都应用 select。 我正在尝试类似的东西,
val df = df1.join(df2, Seq("col1"), "left").select(
coalesce(df2("col2"), df1("col1")).as("col1")
)
但这似乎不起作用。另外,我认为它会过滤掉 DF1 的其他列。我想保留 DF1 的所有列。
如何在 Scala 中做到这一点?
【问题讨论】:
标签: scala apache-spark join apache-spark-sql apache-spark-dataset