Size: a a a

2021 November 28

ИС

Иван Соловьев... in Moscow Spark
Всем привет! Подскажите пожалуйста, встретил недавно на собесе задачку:
есть три однотипных dataframe - большой, средний и маленький. В каком порядке оптимально их заджоинить?
источник

A

Alex in Moscow Spark
А вы уверены что спарк все не поменяет? :)
источник

A

Alex in Moscow Spark
Опять же: если средний и большой датафреймы уже отсортированы по полу которому будет джойн и вы начали с них, то там может сразу sorted merge join пойти, без решафла
источник

ИС

Иван Соловьев... in Moscow Spark
Я думал если RBO-оптимизатор,  то не поменяет)
источник

A

Alex in Moscow Spark
Тут ещё можно спросить что за спарк, может там адаптивное выполнение уже включено
источник

ЕГ

Евгений Глотов... in Moscow Spark
Без адаптива джойнит в порядке который задали
источник

ЕГ

Евгений Глотов... in Moscow Spark
Если маленький влезает в бродкаст, если джойн срезает много рядов, то оптимально будет маленький+большой, потом результат со средним
источник

ЕГ

Евгений Глотов... in Moscow Spark
Если не срезает, то особо не должно быть разницы
источник

ЕГ

Евгений Глотов... in Moscow Spark
Но если маленький срезает много рядов со среднего, то есть шанс их результат тоже забродкастить
источник

ЕГ

Евгений Глотов... in Moscow Spark
Тогда будет быстрее всего
источник

ЕГ

Евгений Глотов... in Moscow Spark
источник

ЕГ

Евгений Глотов... in Moscow Spark
Думаю, правильный ответ - рассуждение)
источник

A

Alex in Moscow Spark
Там разве не может cbo сработать? Вроде уже работало давно
источник

ЕГ

Евгений Глотов... in Moscow Spark
Пока что за свою практику видел только один случай его работы - когда он решил забродкастить ДФ на 2тб снаппи орка вместо того, который я ему сказал, на 1000 строчек)
источник

A

Alex in Moscow Spark
Ну то есть шансы есть :)
источник

ЕГ

Евгений Глотов... in Moscow Spark
Не)
источник

ЕГ

Евгений Глотов... in Moscow Spark
Только такой вот случай)
источник

ЕГ

Евгений Глотов... in Moscow Spark
В остальном порядок джойнов определяется юзером
источник

ИС

Иван Соловьев... in Moscow Spark
Спасибо большое)))
источник
2021 November 29

А

Алексей in Moscow Spark
что если для разововой нумерации воспользоваться:
(spark_partition_id()*10000000) + ROW_NUMBER() OVER(PARTITION BY spark_partition_id() ORDER BY 1 ) as rn
вроде, же должно параллелиться по spark_partition_id
источник