💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом задании верен только один вариант. Фрагменты относятся к Scala 3; внешняя библиотека названа прямо в коде или условии.
Вопрос 24 из 30
В контракте темы «Профилирование решения» что следует оставить в проектном решении после этого изменения контекста?
Оставить в контракте правило «профилирование Spark начинается с DAG, stage/task metrics, shuffle read/write, spill и времени GC»; проверяемое ограничение — «оптимизация по строкам исходного Scala-кода без просмотра Spark UI часто лечит не то узкое место».
Оставить в контракте правило «профилирование Spark начинается с DAG, stage/task metrics, shuffle read/write, spill и времени GC»; проверяемое ограничение — «одного примера достаточно, чтобы подтвердить законы абстракции и отсутствие побочных эффектов».
Оставить в контракте правило «профилирование Spark начинается с DAG, stage/task metrics, shuffle read/write, spill и времени GC»; проверяемое ограничение — «переход на RDD ради привычной функции может лишить систему predicate pushdown и оптимизации плана».
Оставить в контракте правило «transformation создаёт новый RDD/DataFrame, не возвращая данные драйверу; узкие и широкие преобразования различаются потребностью в shuffle»; проверяемое ограничение — «простое увеличение числа partitions не устраняет skew и может добавить накладные расходы на планирование».
Оставить в контракте правило «Spark строит ленивый план преобразований и выполняет его только при action; одна и та же ветка без cache может вычисляться повторно»; проверяемое ограничение — «оптимизация по строкам исходного Scala-кода без просмотра Spark UI часто лечит не то узкое место».
Вопрос 25 из 30
При проверке темы «Профилирование решения» какой итог можно проверить автоматически или воспроизводимым примером?
Сначала найдите самый дорогой stage и причину: skew, shuffle, сериализация, I/O или GC; только затем меняйте код. В проверке воспроизвести ситуацию: оптимизация по строкам исходного Scala-кода без просмотра Spark UI часто лечит не то узкое место.
Сначала найдите самый дорогой stage и причину: skew, shuffle, сериализация, I/O или GC; только затем меняйте код. В проверке воспроизвести ситуацию: переход на RDD ради привычной функции может лишить систему predicate pushdown и оптимизации плана.
Измерьте распределение ключей, примените salting или отдельную обработку горячих ключей и настройте размер partition. В проверке воспроизвести ситуацию: оптимизация по строкам исходного Scala-кода без просмотра Spark UI часто лечит не то узкое место.
Профилирование Spark начинается с DAG, stage/task metrics, shuffle read/write, spill и времени GC. Оставить тест без старой версии данных и неизвестных полей.
В теме «Профилирование решения» исправить один показанный вызов по рекомендации «Оставляйте transformations чистыми, а внешнюю запись делайте через поддерживаемый sink с идемпотентностью». Общий контракт и прежнюю границу отдельно не воспроизводить.