Подборка объединяет вопросы, отмеченные на этапах интервью в Лоция. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: project experience, Airflow, airflow.
Возьмите зерно из банки с этикеткой «смесь». Поскольку все этикетки неверны, эта банка содержит один чистый продукт, и зерно однозначно определяет её содержимое.
DAG описывает задачи и зависимости без направленных циклов. Airflow планирует и отслеживает их запуск; сами вычисления выполняются выбранным механизмом исполнения.
Опишите собственный путь данных: запись Parquet с согласованной схемой, размещение в доступном хранилище, загрузку поддерживаемым механизмом целевой СУБД и проверку результата.
Retry — повторная попытка задачи после сбоя. Она помогает пережить временную недоступность сервиса, но не исправляет постоянно неверные данные или ошибочную логику.
Выберите реальную проблему и покажите измерения: перекос распределения, лишние пересылки данных, плохую статистику, spill на диск или ожидание ресурсов.
Декоратор принимает функцию или класс и возвращает объект, который будет связан с прежним именем. @decorate над def f соответствует применению f = decorate(f).
Spark делит данные на партиции и выполняет работу над ними на executors. Driver строит план, а вычисления запускаются при действиях, которым нужен результат.
list — изменяемая последовательность, tuple — неизменяемая последовательность. Кроме них в Python есть dict для пар ключ—значение и set/frozenset для уникальных элементов.
Salting разбивает слишком частый ключ на несколько искусственных подгрупп, добавляя к нему «соль». Это распределяет нагрузку, которую иначе получила бы одна перегруженная партиция.
Для SQL и DataFrame Spark строит и оптимизирует план запроса, в частности с помощью Catalyst. Опыт работы с оптимизатором показывают через анализ плана и устранение конкретной причины медленного выполнения.
Генератор выдаёт значения по мере обхода через yield, не создавая всю последовательность сразу. Контекстный менеджер задаёт вход и выход из блока with, в том числе очистку при исключении.
Hook в Airflow инкапсулирует работу с внешним сервисом и получение параметров подключения. Благодаря этому логика задачи не должна самостоятельно разбирать и хранить учётные данные.