【发布时间】:2019-03-19 04:47:56
【问题描述】:
我有两个数据框。
数据DF
+---+
| tt|
+---+
| a|
| b|
| c|
| ab|
+---+
改变
+----+-----+------+
|name|alter|profit|
+----+-----+------+
| a| aa| 1|
| b| a| 5|
| c| ab| 8|
+----+-----+------+
任务是在数据框alter col(“name”)中搜索col“tt”,如果找到加入他们,如果没有找到,则在col(“alter”)中搜索col“tt”。 col("name") 的优先级高于 col("alter")。这意味着如果 col("tt") 的行与 col("name") 匹配,我不想将它与仅匹配 col("alter") 的其他行匹配。我怎样才能完成这项任务?
我试图写一个连接,但它不起作用。
dataDF = dataDF.select("*")
.join(broadcast(alterDF),
col("tt") === col("Name") || col("tt") === col("alter"),
"left")
结果是:
+---+----+-----+------+
| tt|name|alter|profit|
+---+----+-----+------+
| a| a| aa| 1|
| a| b| a| 5| // this row is not expected.
| b| b| a| 5|
| c| c| ab| 8|
| ab| c| ab| 8|
+---+----+-----+------+
【问题讨论】:
标签: apache-spark dataframe join