avatar
дата инженеретта
@data_engineerette
23.04.2026 11:51
Одна из оптимизаций адаптивки

У меня есть много запросов вида "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
🔥 14
1 10 1.7K

Обсуждение 1

Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.

Обсудить в Telegram