SC Scala  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Spark SQL и оптимизация запросов

В тесте «Spark SQL и оптимизация запросов» недостаточно узнать термин: потребуется проследить типы и выполнение, найти риск соседнего случая и выбрать проверяемую правку. Шкалы: Оптимизатор Catalyst, План выполнения, Перераспределение данных, Кэширование, Проверка корректности, Устойчивость к сбоям.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом задании верен только один вариант. Фрагменты относятся к Scala 3; внешняя библиотека названа прямо в коде или условии.
Вопрос 1 из 30
Какой вывод о теме «Оптимизатор Catalyst» можно сделать без дополнительных допущений?
ScalaОптимизатор Catalyst: чтение фрагмента
val result = df.withColumn("norm", lower(trim(col("name"))))
Вопрос 2 из 30
Для темы «Оптимизатор Catalyst» какое последствие нельзя исключить одним успешным запуском?
ScalaОптимизатор Catalyst: изменившийся контекст
// Дополнительный контекст: Объём данных вырос, изменился план выполнения и часть вычислений прошла через `shuffle`.
val result = df.withColumn("norm", lower(trim(col("name"))))
Вопрос 3 из 30
При исправлении темы «Оптимизатор Catalyst» какая правка сохраняет полезную семантику и не расширяет обещания API?
ScalaОптимизатор Catalyst: решение на ревью
val result = df.withColumn("norm", lower(trim(col("name"))))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 4 из 30
В контракте темы «Оптимизатор Catalyst» локальный пример стал частью более крупной системы. Какая трактовка контракта остаётся полной?
cost(plan)=\sum cost(operator_i)
Вопрос 5 из 30
При проверке темы «Оптимизатор Catalyst» какой пункт следует добавить в критерии приёмки изменения?
Вопрос 6 из 30
В теме «План выполнения» код компилируется и запускается. Какое утверждение о его контракте остаётся верным?
ScalaПлан выполнения: чтение фрагмента
import org.apache.spark.sql.functions.col
val filtered = result
  .filter(col("score") > 0)
  .select("id", "score")
filtered.explain("extended")
val preview = filtered.limit(20).collect()
println(preview.length)
Вопрос 7 из 30
Для темы «План выполнения» какой пограничный случай относится к контракту, а не только к стилю записи?
ScalaПлан выполнения: изменившийся контекст
// Дополнительный контекст: Задачу перезапустили после частичной записи результата.
import org.apache.spark.sql.functions.col
val filtered = result
  .filter(col("score") > 0)
  .select("id", "score")
filtered.explain("extended")
val preview = filtered.limit(20).collect()
println(preview.length)
Вопрос 8 из 30
При исправлении темы «План выполнения» что здесь лучше исправить до объединения изменений?
ScalaПлан выполнения: решение на ревью
import org.apache.spark.sql.functions.col
val filtered = result
  .filter(col("score") > 0)
  .select("id", "score")
filtered.explain("extended")
val preview = filtered.limit(20).collect()
println(preview.length)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 9 из 30
В контракте темы «План выполнения» условия эксплуатации изменились, но синтаксис остался прежним. Что теперь важно удержать вместе?
shuffle\ bytes=\sum partition\ exchange
Вопрос 10 из 30
При проверке темы «План выполнения» что поможет соседнему модулю не повторить ту же ошибку?
Вопрос 11 из 30
В теме «Перераспределение данных» на ревью спорят о причине наблюдаемого результата. Какое объяснение корректно?
ScalaПерераспределение данных: чтение фрагмента
spark.conf.set("spark.sql.adaptive.enabled", "true")
val joined = left.join(right, Seq("id"))
Вопрос 12 из 30
Для темы «Перераспределение данных» объём данных вырос, изменился план выполнения и часть вычислений прошла через `shuffle`. Какой дефект остаётся возможным при корректном синтаксисе?
ScalaПерераспределение данных: изменившийся контекст
// Дополнительный контекст: Объём данных вырос, изменился план выполнения и часть вычислений прошла через `shuffle`.
spark.conf.set("spark.sql.adaptive.enabled", "true")
val joined = left.join(right, Seq("id"))
Вопрос 13 из 30
При исправлении темы «Перераспределение данных» на ревью уже воспроизвели проблему: Слишком маленькие partitions дают накладные расходы, слишком большие — spill и длинные задачи. Какую правку стоит принять?
ScalaПерераспределение данных: решение на ревью
spark.conf.set("spark.sql.adaptive.enabled", "true")
val joined = left.join(right, Seq("id"))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 14 из 30
В контракте темы «Перераспределение данных» какое решение не превращает частный успешный случай в общее обещание?
Вопрос 15 из 30
При проверке темы «Перераспределение данных» какой контроль остаётся полезным после рефакторинга и переименования кода?
Вопрос 16 из 30
Какая характеристика конструкции «Кэширование» подтверждается показанным фрагментом?
ScalaКэширование: чтение фрагмента
val base = expensive.persist()
base.count()
useTwice(base)
base.unpersist()
Вопрос 17 из 30
Для темы «Кэширование» что здесь требует отдельного теста или компиляционного примера?
ScalaКэширование: изменившийся контекст
// Дополнительный контекст: Объём данных вырос, изменился план выполнения и часть вычислений прошла через `shuffle`.
val base = expensive.persist()
base.count()
useTwice(base)
base.unpersist()
Вопрос 18 из 30
При исправлении темы «Кэширование» нужно устранить причину, а не замаскировать симптом. Какое изменение подходит лучше?
ScalaКэширование: решение на ревью
val base = expensive.persist()
base.count()
useTwice(base)
base.unpersist()
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 19 из 30
В контракте темы «Кэширование» после изменения окружения команда пересматривает контракт. Какой вариант корректен?
Вопрос 20 из 30
При проверке темы «Кэширование» какая проверка связывает принятую правку с реальной границей решения?
Вопрос 21 из 30
В теме «Проверка корректности» проследите типы и порядок вычисления. Какой вывод выдерживает такую проверку?
ScalaПроверка корректности: чтение фрагмента
val before = oldQuery.exceptAll(newQuery).count()
val after = newQuery.exceptAll(oldQuery).count()
Вопрос 22 из 30
Что ограничивает безопасное применение «Проверка корректности»?
ScalaПроверка корректности: изменившийся контекст
// Дополнительный контекст: Объём данных вырос, изменился план выполнения и часть вычислений прошла через `shuffle`.
val before = oldQuery.exceptAll(newQuery).count()
val after = newQuery.exceptAll(oldQuery).count()
Вопрос 23 из 30
Какая доработка не переносит ошибку темы «Проверка корректности» в вызывающий код?
ScalaПроверка корректности: решение на ревью
val before = oldQuery.exceptAll(newQuery).count()
val after = newQuery.exceptAll(oldQuery).count()
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 24 из 30
В контракте темы «Проверка корректности» какая формулировка учитывает и семантику конструкции, и реальный риск?
Вопрос 25 из 30
При проверке темы «Проверка корректности» какой итог ревью содержит и действие, и способ заметить возврат риска?
Вопрос 26 из 30
В теме «Устойчивость к сбоям» какое утверждение не переносит в Scala правило из другого языка или другой конструкции?
ScalaУстойчивость к сбоям: чтение фрагмента
val tempPath = "/warehouse/report.tmp"
val targetPath = "/warehouse/report"
result.write.mode("overwrite").parquet(tempPath)
// После проверки метаданных каталог публикуется отдельной операцией,
// а читатели до этого продолжают видеть targetPath.
Вопрос 27 из 30
Объём данных вырос, изменился план выполнения и часть вычислений прошла через `shuffle`. Какое ограничение темы «Устойчивость к сбоям» становится существенным?
ScalaУстойчивость к сбоям: изменившийся контекст
// Дополнительный контекст: Небольшую таблицу перестали передавать широковещательно после обновления статистики.
val tempPath = "/warehouse/report.tmp"
val targetPath = "/warehouse/report"
result.write.mode("overwrite").parquet(tempPath)
// После проверки метаданных каталог публикуется отдельной операцией,
// а читатели до этого продолжают видеть targetPath.
Вопрос 28 из 30
При исправлении темы «Устойчивость к сбоям» какое решение уменьшает вероятность повторения обнаруженного дефекта?
ScalaУстойчивость к сбоям: решение на ревью
val tempPath = "/warehouse/report.tmp"
val targetPath = "/warehouse/report"
result.write.mode("overwrite").parquet(tempPath)
// После проверки метаданных каталог публикуется отдельной операцией,
// а читатели до этого продолжают видеть targetPath.
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 29 из 30
В контракте темы «Устойчивость к сбоям» новый сценарий не отменяет основное правило, но делает заметной его границу. Какой ответ это отражает?
Вопрос 30 из 30
При проверке темы «Устойчивость к сбоям» что нужно оставить после исправления, кроме комментария в исходном файле?

Ответьте на все 30 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу