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

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