рассчитать каждую строку на основе другой таблицы искры sql - PullRequest
0 голосов
/ 25 октября 2018

У меня есть требование, где мне нужно вычислить столбец в моем фрейме данных.Для каждой строки большого фрейма данных мне нужно сравнить с и до с другими фреймами данных флаг и дата для расчета нового столбца.

По сути, вторая таблица - это справочная таблица, которую необходимо использовать для выполнения моих расчетов.Я вижу, как происходит много случайных изменений, которые влияют на производительность.Например: 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 | NO |
|A | 2016-02-11 | Да |
|B | 2015-01-10 | NO |
+ ------ + ---------- + ---------- +

IЯ планирую присоединиться к большому столу на Loc.Внешний вид таблицы не обновляется, и он маленький.Любые предложения о том, как выполнить эту операцию оптимальным образом.

1 Ответ

0 голосов
/ 25 октября 2018

Вы можете намекнуть Spark SQL, что данный DF должен быть передан для объединения, вызвав широковещательную рассылку в DataFrame перед присоединением к нему, например,

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

Таблица широковещания является маленькой.

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

...