Добавить в корзинуПозвонить
Найти в Дзене
дата инженеретта

Одна из оптимизаций адаптивки

У меня есть много запросов вида "select ... from ... order by". В какой-то момент я заметила, что иногда джобы стартуют, а иногда нет, но считается все нормально. Но разобраться-то все равно интересно) ☕️ Я смотрю план запроса у таблиц. Initial Plan у них одинаковый - чтение, селект, сортировка: == Initial Plan == Sort +- Exchange +- Project +- BatchScan catalog.schema.table ☕️ Смотрю финальный план 1 таблица (запускает джобу): == Final Plan == AQEShuffleRead +- ShuffleQueryStage, Statistics(sizeInBytes=368.0 B, rowCount=1) +- Exchange +- * Project +- BatchScan catalog.schema.table1 Длительность - 4с 2 таблица (не запускает джобу): == Final Plan == LocalTableScan Длительность - 10мс И причем тут LocalTableScan? ☕️ Прикол в том, что во второй табличке 0 строк. И включена адаптивка (spark.sql.adaptive.enabled = true). Адаптивка в спарке понимает, что бессмысленно шафлить 0 строк данных, и возвращает результат за несколько мс @data_engineerette

Одна из оптимизаций адаптивки

У меня есть много запросов вида "select ... from ... order by". В какой-то момент я заметила, что иногда джобы стартуют, а иногда нет, но считается все нормально. Но разобраться-то все равно интересно)

☕️ Я смотрю план запроса у таблиц. Initial Plan у них одинаковый - чтение, селект, сортировка:

== Initial Plan ==

Sort

+- Exchange

+- Project

+- BatchScan catalog.schema.table

☕️ Смотрю финальный план

1 таблица (запускает джобу):

== Final Plan ==

AQEShuffleRead

+- ShuffleQueryStage, Statistics(sizeInBytes=368.0 B, rowCount=1)

+- Exchange

+- * Project

+- BatchScan catalog.schema.table1

Длительность - 4с

2 таблица (не запускает джобу):

== Final Plan ==

LocalTableScan

Длительность - 10мс

И причем тут LocalTableScan?

☕️ Прикол в том, что во второй табличке 0 строк. И включена адаптивка (spark.sql.adaptive.enabled = true). Адаптивка в спарке понимает, что бессмысленно шафлить 0 строк данных, и возвращает результат за несколько мс

@data_engineerette