В озоне лет 5 назад выпиливал из кода подобный велосипед (правда в том месте все ещё был yarn), за счёт сильной связанности он усложнил переход на python3. Там тоже была обвязка, которая дублировала существующую стандартную функциональность. Чтобы избавиться от такой ситуации в будущем вводил декларативный подход - отдельно описывалось что где как и когда запускать, а в коде оставалась только реализация бизнес логики - датафреймы на вход -> датафреймы на выход (вход опционально, если источник внешний). На текущем месте радуюсь что все необходимые подобные абстракции уже реализованы в dagster, а Spark-over-k8s запускается в client mode (если хочется) без танцев с бубном (никаких yaml без строгой необходимости, вся нутрянка определяющая окружение защита в конфиге этого окружения, и ничего описанного в статье велосипедить не нужно). Но это конечно требует экспертизы и не отменяет большой работы по настройке.
Джоба которая пытается контролировать окружение - антипаттерн. Окружение должно запускать джобу и делать чтобы ей было хорошо, а не наоборот.
Но в целом то конечно пофиг, особенно если загрузка кода через бакет, а не git... Удобно наверное. Если в данных условиях процессы работают - то хорошо и все молодцы.
А Livy разве не потерял актуальность с появлением Spark Connect?
Раньше и продукта не было. Расширился круг задач и уровень автономности. Кроме codex везде использую по API - количество токенов в месяц выросло x10-x100, а денег стало уходить x5. По использованию подписки и лимитам бесполезно смотреть, там нет четкой метрики по количеству токенов.
Звучит как "переписать весь почтовый сервис чтоб можно было на хабре пожаловаться как монга тормозит и/или теряет почту юзеров" :-)
Или "как мы учили монгу переживать ученьки"... хотя такое по-любому уже было, возможно только опубликовано где-то внутри Яндекса, такие страшилки не для публики...
Вероятно оказалось более продуктивным эти самые 10к зарплат переложить на тех кто поставляет стойки. Минимизировать персонал и список работ внутри ДЦ звучит разумной стратегией.
Не знаю почему этот комментарий адресован сюда. Я работал с системой где на postgresql кластере было легко получить 100к параллельно висящих запросов но не заметить при этом больших проблем на проде.
А без BPMN? Зная, примерно, что какая-то функциональность должна быть реализована в коде, как ее найти? И по коду, как разобраться за какую часть бизнес процесса этот код отвечает? Ctrl+клик не сложно реализовать, но имхо это повлияет не так сильно, как в целом наличие описанных процессов в BPMN. (Впрочем это не оправдывает пост, который обрывается на середине слившись во что-то странное после спорного аргумента против postgresql)
Спасибо за статью, хорошо собрали все связанные проблемы вместе. Вступление возможно стоит поправить, из него вообще не понятно что речь идёт о разнесении таблиц по разным базам - после прочтения вступления и первой секции возникла мысль написать "автор, ты чо, реально про нормальные формы не слышал?"
alert("откройте проводник пожалуйста");
На самом деле довольно хорошо все задумано, но зачем таскать копипасту энтрипойнта с зависимостью от пакета в каждой джобе?
В озоне лет 5 назад выпиливал из кода подобный велосипед (правда в том месте все ещё был yarn), за счёт сильной связанности он усложнил переход на python3. Там тоже была обвязка, которая дублировала существующую стандартную функциональность. Чтобы избавиться от такой ситуации в будущем вводил декларативный подход - отдельно описывалось что где как и когда запускать, а в коде оставалась только реализация бизнес логики - датафреймы на вход -> датафреймы на выход (вход опционально, если источник внешний). На текущем месте радуюсь что все необходимые подобные абстракции уже реализованы в dagster, а Spark-over-k8s запускается в client mode (если хочется) без танцев с бубном (никаких yaml без строгой необходимости, вся нутрянка определяющая окружение защита в конфиге этого окружения, и ничего описанного в статье велосипедить не нужно). Но это конечно требует экспертизы и не отменяет большой работы по настройке.
Джоба которая пытается контролировать окружение - антипаттерн. Окружение должно запускать джобу и делать чтобы ей было хорошо, а не наоборот.
Но в целом то конечно пофиг, особенно если загрузка кода через бакет, а не git... Удобно наверное. Если в данных условиях процессы работают - то хорошо и все молодцы.
А Livy разве не потерял актуальность с появлением Spark Connect?
Раньше и продукта не было. Расширился круг задач и уровень автономности. Кроме codex везде использую по API - количество токенов в месяц выросло x10-x100, а денег стало уходить x5. По использованию подписки и лимитам бесполезно смотреть, там нет четкой метрики по количеству токенов.
Цены за те же возможности падают в два раза чуть ли не каждые полгода.
Хз как именно, но статья бы сильно выиграла если бы получилось это хорошо раскрыть. Как получилось в принципе тоже с удовольствием прочитал.
Звучит как "переписать весь почтовый сервис чтоб можно было на хабре пожаловаться как монга тормозит и/или теряет почту юзеров" :-)
Или "как мы учили монгу переживать ученьки"... хотя такое по-любому уже было, возможно только опубликовано где-то внутри Яндекса, такие страшилки не для публики...
как ручка превратилась в handler? редактор с AI-автозаменой?
За эти деньги оно должно ещё Cyberpunk в 40fps fhd тянуть
На эпиках/ксеонах и 4x3090 действительно можно собрать что-то стоящее, если про экономию. Нет смысла мучаться с (недо)описанным в статье железом.
Тоже на этом месте остановился, чтобы пожелать автору использовать llm при написании статей как-нибудь по-другому.
Только типы? А сам Native целиком вместе с реализацией что помешало взять?
Вероятно оказалось более продуктивным эти самые 10к зарплат переложить на тех кто поставляет стойки. Минимизировать персонал и список работ внутри ДЦ звучит разумной стратегией.
Перекладывать JSON'ы?
Не знаю почему этот комментарий адресован сюда. Я работал с системой где на postgresql кластере было легко получить 100к параллельно висящих запросов но не заметить при этом больших проблем на проде.
А без BPMN? Зная, примерно, что какая-то функциональность должна быть реализована в коде, как ее найти? И по коду, как разобраться за какую часть бизнес процесса этот код отвечает? Ctrl+клик не сложно реализовать, но имхо это повлияет не так сильно, как в целом наличие описанных процессов в BPMN. (Впрочем это не оправдывает пост, который обрывается на середине слившись во что-то странное после спорного аргумента против postgresql)
Спасибо за статью, хорошо собрали все связанные проблемы вместе. Вступление возможно стоит поправить, из него вообще не понятно что речь идёт о разнесении таблиц по разным базам - после прочтения вступления и первой секции возникла мысль написать "автор, ты чо, реально про нормальные формы не слышал?"
Hidden text
Возмущение в силе, чувствую я, дзен покинуть урлы этого поста ведут.
Это хорошо, когда процессы выстроены так, что без ревью код рандомного отдела не залезет в общий даталейк.