Рассчитать каждую строку на основе другой таблицы искры sql
У меня есть требование, где мне нужно вычислить столбец в моем фрейме данных. Для каждой строки большого фрейма данных мне нужно сравнить и с другим флагом фрейма данных и дату, чтобы вычислить новый столбец.
По сути, вторая таблица - это справочная таблица, которую необходимо использовать для выполнения моих расчетов. Я вижу, как происходит много случайных изменений, которые влияют на производительность. Например: Large_DF
+ ------ + ---------- + ---------- +
| Loc | От | до |
+ ------ + ---------- + ---------- +
| | 2016-03-31 | 2016-03-31 |
| | 2016-02-28 | 2016-02-30 |
| | 2016-01-31 | 2016-02-11 |
| B | 2014-12-31 | 2015-01-10 |
+ ------ + ---------- + ---------- +
+ ------ + ---------- + ---------- +
| Loc | Дата | Флаг |
+ ------ + ---------- + ---------- +
| A | 2016-03-31 | Да |
| A | 2016-02-11 | NO |
| A | 2016-02-11 | Да |
| B | 2015-01-10 | NO |
+ ------ + ---------- + ---------- +
Я планирую присоединиться к большому столу на Loc. Внешний вид таблицы не обновляется, и он маленький. Любые предложения о том, как выполнить эту операцию оптимальным образом.
1 ответ
Вы можете намекнуть Spark SQL, что данный DF должен быть передан для объединения, вызвав широковещание в DataFrame перед присоединением к нему, например,
df1.join(broadcast(df2),"key")
Таблица трансляции - маленькая.
Тем не менее, вы уверены, что условие присоединения в порядке?