根据另一张表Spark SQL计算每一行

时间:2018-10-25 11:16:25

标签: apache-spark apache-spark-sql pyspark-sql jointable

我有一个需要在我的数据框中计算列的要求。对于大数据框的每一行,我需要将 从和到 与另一个数据框 flag date 来计算新列。

基本上,第二张表是一个查找表,需要用于执行我的计算。我可以看到发生了很多洗牌,这些洗牌反过来又影响了工作绩效。 例如: Large_DF

+ ------ + ---------- + ---------- +

| Loc |从|到|

+ ------ + ---------- + ---------- +

| A | 2016-03-31 | 2016-03-31 |
| A | 2016-02-28 | 2016-02-30 |
| A | 2016-01-31 | 2016-02-11 |
| B | 2014-12-31 | 2015-01-10 |
+ ------ + ---------- + ---------- +

+ ------ + ---------- + ---------- +

| Loc |日期|标志|

+ ------ + ---------- + ---------- +

| A | 2016-03-31 |是|
| A | 2016-02-11 |否|
| A | 2016-02-11 |是|
| B | 2015-01-10 |否|
+ ------ + ---------- + ---------- +

我打算加入Loc上的大表。查找表不会更新,并且很小。有关如何以最佳方式执行此操作的任何建议。

1 个答案:

答案 0 :(得分:0)

您可以通过在DataFrame上调用广播之前在DataFrame上调用广播来向Spark SQL暗示应广播给定的DF以进行联接,例如

df1.join(broadcast(df2),"key")

广播表很小。

也就是说,您确定加入条件还可以吗?