仅当两个 Spark dataframe 满足条件时才触发 IF 语句

Trigger IF Statement only when two Spark dataframe meet the conditions

我有两个相同的 Spark DataFrame。它们具有相同的列。我试图在一行中创建一个 IF-Else 语句,但找不到更好的方法。

if (df1.col1 = df2.col2 and df1.col2 < df2.col2){
   val final_df = df1.union(df2)
}
else{
println("No Match")
}

我想做的是来自两个数据框。如果来自 df1 和 df2 的 col1 中的任何 1 行都匹配,并且也匹配 df1 和 df2 中的行,则来自 df2 的 col2 中的行必须大于 df1 中的行。然后我将合并两个数据框。否则,打印消息不匹配。

更好的说明方式如下

df1.show()
+----+----------+
|name|version_nb|
+----+----------+
|tony|56        |
|sam |96        |
|john|9         |

df2.show()
+----+----------+
|name|version_nb|
+----+----------+
|tony|78        |
|mary|12        |
|Rob |2         |

在上面的这种情况下,if-else 语句将触发并合并两个 DF,因为在两个 DF 的名称列中都有一个匹配项,而且 df2 中的 version_nb 大于 df1。但是,如果我们只有名称匹配,但 df2 中的 version_nb 小于或等于 df1。然后它会打印出消息 No match.

如果大家能给我一些关于如何创建 if-else 语句的想法或建议,那就太好了。那太好了。

您可以按名称加入数据框,过滤 df2 中的版本大于 df1 中的版本的行,然后检查是否存在任何行。例如:

val df3 = df1.join(df2, "name").filter(df2.col("version_nb") > df1.col("version_nb"))

if (!df3.isEmpty)
...