首页 > 解决方案 > 使用 Spark 的不同值的增量过滤器 DataFrame

问题描述

首先,我有一个具有不同值的数据框:

| Days |
| day1 |
| day2 |
| day3 |

然后,我有另一个 Dataframe 有一些像这样的值

| A | B | Days |
| 1 | 2 | day1 |
| 3 | 4 | day3 |
| 5 | 6 | day3 |
| 7 | 8 | day2 |

我想用第一个数据框的值过滤第二个数据框。首先我想获得一个过滤day1的数据框,然后是day1和day2,最后是day1、day2和day3(增量)。

输出将是:

| A | B | Days |
| 1 | 2 | day1 |

| A | B | Days |
| 1 | 2 | day1 |
| 7 | 8 | day2 |

| A | B | Days |
| 1 | 2 | day1 |
| 7 | 8 | day2 |
| 3 | 4 | day3 |
| 5 | 6 | day3 |

非常感谢

标签: scalaapache-spark

解决方案


通过与 and() 运算符结合使用 filter() 函数数据框。

例子

var days = df1.collectAsList
import spark.implicits._

val d1 = df2.filter($"Days".equalTo(days.get(0).getString(0)))
val d2 = df2.filter($"Days".equalTo(days.get(0).getString(0))
.and($"Days".equalTo(days.get(1).getString(0))))
val d3 = df2.filter($"Days".equalTo(days.get(0).getString(0))
.and($"Days".equalTo(days.get(1).getString(0)))
.and($"Days".equalTo(days.get(2).getString(0)))
)

推荐阅读