Одна из оптимизаций адаптивки
У меня есть много запросов вида "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
Обсуждение 1
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram