【发布时间】:2017-12-16 16:49:43
【问题描述】:
我正在尝试使用 Spark 2 解决此类问题,但找不到解决方案。
我有一个数据框 A:
+----+-------+------+
|id |COUNTRY| MONTH|
+----+-------+------+
| 1 | US | 1 |
| 2 | FR | 1 |
| 4 | DE | 1 |
| 5 | DE | 2 |
| 3 | DE | 3 |
+----+-------+------+
还有一个数据框B:
+-------+------+------+
|COLUMN |VALUE | PRIO |
+-------+------+------+
|COUNTRY| US | 5 |
|COUNTRY| FR | 15 |
|MONTH | 3 | 2 |
+-------+------+------+
我们的想法是将数据帧 B 的“规则”应用于数据帧 A 以获得此结果:
数据框 A':
+----+-------+------+------+
|id |COUNTRY| MONTH| PRIO |
+----+-------+------+------+
| 1 | US | 1 | 5 |
| 2 | FR | 1 | 15 |
| 4 | DE | 1 | 20 |
| 5 | DE | 2 | 20 |
| 3 | DE | 3 | 2 |
+----+-------+------+------+
我试过类似的东西:
dfB.collect.foreach( r =>
var dfAp = dfA.where(r.getAs("COLUMN") == r.getAs("VALUE"))
dfAp.withColumn("PRIO", lit(r.getAs("PRIO")))
)
但我确定这不是正确的方式。
在 Spark 中解决这个问题的策略是什么?
【问题讨论】:
标签: scala apache-spark apache-spark-sql