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