Рассчитать каждую строку на основе другой таблицы искры 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")

Таблица трансляции - маленькая.

Тем не менее, вы уверены, что условие присоединения в порядке?

Другие вопросы по тегам