en
Feedback
Ваня инженер 🇸🇪

Ваня инженер 🇸🇪

Open in Telegram

Заметки про IT, развитие и жизненные радости из Швеции. Дзен канала: без назиданий, только моё мнение и опыт. За оскорбления в комментариях предупреждение и бан. Написать мне t.me/skatromb

Show more
Russia465 430The category is not specified
658
Subscribers
No data24 hours
No data7 days
+230 days
Posts Archive
В топку dev-container 😀 Помните, я рассказывал, что можно запилить docker dev-container со всякими command-line тулзами? Так вот, я его сжёг в печи. Ваня увлёкся переусложнением на ровном месте, которое не окупается. Проблема возникла, когда мне потребовались гугловские тулзы, которым нужно общаться с докером, например gcloud artifacts docker. Я хотел, чтобы докер мог пуллить имеджи из приватного докер реджистри в гугловском облаке. Но сделать это изнутри dev-container в докере оказалось задачкой нетривиальной: во-первых в таком сетапе не работает out-of-the-box конфигурилка gcloud (ведь она запущена внутри изолированного контейнера), во-вторых, нужно прокидывать запросы к докеру наружу dev-container. На этом месте я почувствовал, что уровень сложности начинает превышать ценность 😄 Думаю, это всё решаемо и вероятно имеет смысл в больших командах, где недельное корпение над этим окупится при использовании парой десятков разработчиков в будущем. Но у нас в команде всего два дата инженера включая меня, так что а ну его нахер 🤷🏾‍♂️

Зарисовки про «необщительных шведов» Недавно катался в стокгольмский офис из своего Нючёпинга на электричке, как всегда с великом — в наших электричках его брать можно, есть несколько выделенных мест. Велик в Швеции — тема, заслуживающая отдельного поста, но я дождусь годовщины покупки велика, потому что могу. На станции в ожидании поезда уже стоял другой велосипедист, и когда подъехал поезд, я ему уступил, мы улыбнулись друг другу, прицепили велики страховочным ремнём на места (ну шведы же, безопасность) и сели неподелёку. Мужик что-то спросил по-шведски, я ничего не понял, перешли на английский. В общем, разговорились про то, достаточно ли мест для великов в этом поезде обычно (достаточно), кто куда едет (мужчина с типичной фамилией Ериксон оказался журналистом местной газеты, где проработал 12 лет, а теперь ушёл из неё и ехал в Стокгольм на обучение по расследовательской журналистике), я порасспрашивал, каково работать в журналистике (безопасно, чего не скажешь о России). Время пролетело быстро, в конце я спросил про свою боль: «Где можно найти репбазу в городе? Уже 3 месяца ищу и безрезультатно». Он развёл руками, но сказал, что сам с соседями репает в соседнем бомбоубежище (они тут повсюду). Пригласил сыграть с ними и предложил обменяться фейсбуками. Может, атмосфера небольшого города, может, шведы не такие уж и необщительные) В тот же день, когда я ехал уже домой на велике и обогнал велосипедиста на матёром даунхил-байке, втопив что есть мочи, словил от него комплиментов. Перебросились парой слов про велосипеды, пожелали приятного пути друг другу. Не в первый раз в Швеции уловил удивляющую внутреннего россиянина атмосферу доброжелательности. Может, дело в ламповости вело-коммьюнити, или в моём собственном настрое? Третий случай же был ещё пару месяцев назад. В той же электричке, вечером, по дороге домой в вагоне сидели 4 шведки возраста около 50 лет. Они были поддаты, продолжали попивать шампусик и очень хотели меня или напоить, или угостить печенькой) Затем последовали беседы про то, кто я такой, про Россию и путина (куда ж без этого), и мои вопросы про то, каково в Нючёпинге. В конце они настояли на обмене телефонами, тем более, что мы жители одного города. Ну тут всё ясно, дело в алкоголе! Не знаю, как другие, но нючёпингские шведы оказались довольно открытыми к общению))

Docker alias Бесит, когда приложения создают в моей домашней директории свои папки, складывают туда гигабайты кэша и прочих файлов. Больше этого бесит только когда при удалении эти папки остаются — как прощальный подарочек. Была надежда на то, что brew это менеджит (не зря же ставит в отдельную папку?), но она оказалась напрасной — приложеньки гадят повсюду независимо от того, куда их установили. Оказалось, что для всяких неграфических тулзов есть выход, и это... да-да, докер. У меня уже давно был докер-образ для dbt (которая суть cli тулза). Чтобы её пользовать, я запускал контейнер с dbt в интерактивном режиме и дальше запускал команды как из локалки... но мне никогда не приходило в голову, что докер образ может drop-in заменить локальную установку, так что вбиваешь команды прямо из локального терминала, а всё выполняется (и загаживается тоже 💩) в докере! Для этого нужно: собрать (или спуллить) докер имедж с нужной тулзой, примаунтить в docker-compose необходимые директории (обычно это папка с кодом + папка с конфигом) и, где случается самая мякотка, — сделать alias для вашего терминала в .zprofile (или где он у вас там). Алиас для dbt (подставьте вместе dbt в уме вашу cli тулзу) выглядит так: alias dbt=" docker compose \ --file ~/code/username/dev_tools/docker-compose.yml run \ # чтобы запускать команду из любой папки, а не только там где компоуз файл --rm \ # чтобы контейнер удалялся после запуска (необязательно) --entrypoint dbt # кому передать аргументы, см ниже dev_container" # любое имя, которым вы наречёте service в docker-compose файле Сохраняем .zprofile, перезагружаем терминал, и вуаля! Теперь все команды, начинающиеся с dbt будут запускать этот докер контейнер, а остальная часть команды передастся в виде аргумента для командной строки. Внутри же контейнера эти аргументы получит dbt благодаря --entrypoint dbt. Например, набираем в локальном терминале: dbt run --select model_1 model_2 Команда запустит docker-compose с dbt. Остаток команды (run ...) передастся внутрь контейнера команде dbt, а после выполнения команды контейнер закрывается. Вы даже не заметите разницы 🙂 О том, что подход рабочий, говорит то, что у AWS и GCP (да и у dbt, чего уж там) есть готовые сборки докер имеджей, которые можно спуллить и использовать сразу. Однако, есть пара причин запилить всё же свой контейнер: во-первых, многие образы не сбилжены под arm процы (важно, только если ваша тулза требует много CPU), во-вторых, классно иметь контейнер со всем необходимым as-a-code, в-третьих — такой контейнер можно залить в репозиторий, откуда его сможет спуллить каждый разработчик в команде. Больше никаких мануалов «как установить все нужные тулзы для начала разработки» — просто запилите докер образ и раздавайте на онбординге. В моей репе можете посмотреть исходники с кодом моего dev-container'а.

sqlfmt, uncompromising linter for SQL Для питона давно существует общепризнанный бескомпромиссный линтер black, с помощью которого можно избежать срачей о код-стайле (это когда разрабы с пеной у рта доказывают друг другу, где должны скобочки стоять, на той же, или на новой строке, и какие отступы использовать для выравнивания строк). Вкупе с pre-commit hooks этот линтер автоматически форматирует ваш код перед каждым коммитом, что отбирает у вас право выбора в этих стратегически важных и мировоззренческих вопросах типа «табуляция или пробелы?», освобождая его для других несущественных и жалких задач, вроде продумывания оптимальной архитектуры приложения. Хоть SQL-ю и почти в два раза больше годиков, чем питону, а подобного линтера для него я до сих пор не встречал. Самый известный, sqlfluff, требует конфигурации, чтобы выдавать хоть что-то съедобное. Повертел я его часик и выкинул, так как тратить время на конфигурирование подобного выглядит как перенос спора с человеком на спор с машиной. Вы мне скажете, что есть же форматер, встроенный в PyCharm? Есть, но во-первых, он не работает отдельно от PyCharm (для ребят с другими IDE), во-вторых, он тоже требует долгой конфигурации, чтобы выдавать что-то разумное и читаемое, но в-третьих, и это самое ужасное для моего случая, он ломается о dbt jinja templates. Просто не понимает, что это за выражение и всё, форматинг заканчивается. И вот, наконец-то, я встретил его. sqlfmt. Уже по лендосу стало ясно, что всё будет хорошо: сходу он обещает работать с jinja и dbt, интеграцию с pre-commit hooks и CI/CD пайплайнами. И, как вишенка на торте, внизу странички окошко, где можно протестировать форматтинг! Каев. Да, он неидеальный. Местами он дробит выражения так, что они становятся менее читаемы, и это неизбежно, ровно как и с black. Но высвобожденное время и свобода от холиваров в команде — бесценны.

Недавно понял, что так как я не взял с собой свой древний тяжеленный терабайтный хард (требующий питания от адаптера, лол), мне некуда бэкапить свой ноут. Думал, на что же мне бэкапиться, решил, что флешка будет оптимальным вариантом по цене/удобству. Взял терабайтную флэшку с USB-C. Но я совершенно не подозревал, что она одновременно ещё и с олдскульным прямоугольным USB-A! Это гениально 🤩

Fleet, New UI в PyCharm JetBrains недавно зарелизили Preview-версию их новой универсальной IDE под названием Fleet. Она задум
+1
Fleet, New UI в PyCharm JetBrains недавно зарелизили Preview-версию их новой универсальной IDE под названием Fleet. Она задумана как lightweight-версия их Intellij-based IDE (возрадуйтесь, любители аскетизма и чистой оперативы). Мне понравился минималистичный, чистый, читаемый дизайн, любителям VSCode зайдёт раздел Settings (скопирован практически 1-в-1), а также возможность жамкать Ctrl + Shift + P. Что не понравилось: нельзя из IDE делать Pull Requests и смотреть диффы между ветками, нельзя подключить БД и закверить её, а также не очень понятно настраивается Debug (в пайчарме был понятный UI, тут же на тебя вываливают json, который неочевидно как заполнять). Здорово было бы объединить дизайн Fleet и возможности PyCharm, правда? Так вот, это возможно прямо сейчас: идём в Settings -> Appearance & Behavior -> New UI -> ставим галку, ребутаемся. Красиво и функционально. Мне зашло.

Мак для игрулек Я уже полтора года пользуюсь макбуком с M1 процессором и считаю его лучшим ноутом по цене/качеству (особенно Air'ы). Единственная потеря, от которой мне было грустно — невозможность держать под боком винду, чтобы запускать всякий олдскул типа Скайрима, Дьяблы и, прости господи, Heretic. Так вот, теперь это не проблема. 1. Dosbox. brew install dosbox — и вы можете запускать дум, просто набрав dosbox ~/games/doom/doom.exe Ну или погамать во вторую цивилизацию или во что вы там угарали в детстве. Если нет brew, скачать досбокс можно тут. 2. Crossover. brew install crossover, и у вас на маке эмулятор винды, который умеет дружить со steam'ом и ставить все нужные пакеты из виндового мира в свою песочницу для запуска большей части игр из библиотеки. Эмуляция почти не сказывается на производительности, так что можно гамать даже в шутеры (хотя некоторые игры почему-то подлагивают, например, 5 герои. Впрочем, обещают потихоньку фиксить). Программа платная, есть 14 дней триала, дальше стоит $75 (впрочем, в интернете есть промокоды). Скайрим и третьи герои у меня работают отлично. Скачать можно тут.

Мак для игрулек Я уже полтора года пользуюсь макбуком с M1 процессором и считаю его лучшим ноутом по цене/качеству (особенно Air'ы). Единственная потеря, от которой мне было грустно — невозможность держать под боком винду, чтобы запускать всякий олдскул типа Скайрима, Дьяблы и, прости господи, Heretic. Так вот, теперь это не проблема. 1. Dosbox. brew install dosbox — и вы можете запускать дум, просто набрав dosbox ~/games/doom/doom.exe Ну или погамать во вторую цивилизацию или во что вы там угарали в детстве. Если нет brew, скачать досбокс можно тут. 2. Crossover. brew install crossover, и у вас на маке эмулятор винды, который умеет дружить со steam'ом и ставить все нужные пакеты из виндового мира в свою песочницу для запуска большей части игр из библиотеки. Эмуляция почти не сказывается на производительности, так что можно гамать даже в шутеры (хотя некоторые игры почему-то подлагивают, например, 5 герои. Впрочем, обещают потихоньку фиксить). Программа платная, есть 14 дней триала, дальше стоит $75 (впрочем, в интернете есть промокоды). Скайрим и третьи герои у меня работают отлично. Скачать можно тут.

А вот и план контента на 9 недель
+3
А вот и план контента на 9 недель

Базовый курс по Data Engineering Prefect scheduler На днях мне написал @sagatdinov и скинул свою статью про модный активно растущий шедулер/оркестратор для ETL тасочек Prefect. Я давно присматривался к нему, так как стандартный в индустрии Airflow я не могу назвать интуитивной и приятной тулзой. Свою работу он делает, но удовольствия от этого мало. В статье очень просто и кратко описано, что такое шедулер, зачем он нужен; приведены понятные сниппеты кода, как использовать Prefect в связке с Google Cloud. Однозначный лайк для Data Engineer'ов и тех, кто хочет узнать, чем мы таким вообще занимаемся) Вдогонку автор мне прислал ещё и курс по Data Engineering, на котором с этим Prefect он познакомился. Ну курс и курс, подумал я, но когда заглянул в оглавление, был приятно удивлён: если бы я пытался максимально сжато, но полно преподавать DE, я бы составил модули так же. Кроме того, стэк почти полностью совпал с тем, что у нас в компании: Google Cloud, любимый dbt, docker. У нас, правда, нет terraform (описание облачной инфраструктуры as-a-code, вместо натыкивания в админке виртуалочек, про которые потом успешно забудешь), вездесущей Кафки (стриминг ивентов, шины данных и всё такое, в двух словах не расскажешь) и собственно Prefect. Не знаю, как на вкус сам контент, но если с ним всё в порядке, то этот курс — офигенный старт для желающего стартануть в DE. Надеюсь, преподавание у них такое же крутое, как и план) Но как минимум, вы можете взять структуру модулей и пойти осваивать все эти штуки самостоятельно (дисклеймер: одна только кафка это на пару месяцев). Ну и да, это не реклама, и даже, строго говоря, не рекомендация — я не проходил курс и не знаю, хорош ли он. Но не поделиться с вами не смог 🙂

Ну да, и фоточки, конечно же!
+6
Ну да, и фоточки, конечно же!

🐈🏡👨‍👩‍👦 Думала ли наша кошка Варежка (да и мы сами), какие приключения её ждут в нашей совместной жизни? Мы точно нет) Не так мы планировали переезд, но 24 февраля естественно порушило наши планы. Вместо размеренного переезда прямым рейсом со всеми животными в Стокгольм, мы срочно и с минимумом вещей улетали в Стамбул, оставив животных на родителей. Большое спасибо им, что приютили наших кошку и собачку ❤️ В итоге план изменился на «дождаться ВНЖ в Стамбуле, прилететь в Россию за ним, забрать по ходу кошку и полететь в Стокгольм, в жильё с поддержкой домашних животных». План был отличный, да только вот правила ввоза животных всё это время мы читали актуальные для России. И это вызвало проблемку. Конец апреля, карты ВНЖ приехали в Москву, и жена улетает, чтобы их забрать, прихватив с собой доверенности на меня и сына (иначе не выдают!). Кошка чипирована, привита, сделан ветпаспорт; куплены билеты на самолёт, забронировано место в кабине для кошки, куплена подходящая переноска; сделана ветеринарная справка на вылет из России (которую в аэропорту Жуковского, как оказалось, нельзя поменять на международную, только во Внуково, Шереметьево или Домодедово 😕). Решено полететь в Стамбул, провести там всем вместе ещё недельку и уже потом отправиться в Стокгольм. Ну что могло пойти не так? Жена и кошка прилетают в Стамбул, успех, отдыхаем! На третий день я решаю перечитать правила ввоза животных в Швецию, чтобы уточнить как получить ветеринарный сертификат в Турции и убедиться, что я ничего не забыл. Пишу письмо в ветконтроль Швеции на всякий пожарный с описанием ситуации и словами «Я ж всё правильно сделал?». Ответ. Нет. Всё было бы хорошо, если бы мы летели прямиком из России, или даже транзитом через Турцию, но без выхода с кошкой в город. А поскольку мы уже, теперь нужно удовлетворить правилам ввоза животных в ЕС не из России, считающейся безопасной в плане бешенства, а из Турции, которая таковой не является. А это значит, что ко всему вышеперечисленному нужно добавить тест на антитела к бешенству для кошки, сделанный в сертифицированной ЕС клинике (которая одна на всю Турцию), выждать 3 (!) месяца, получить положительный результат наличия антител и только потом въезжать. FFFFFFUUUUUU!... Спасибо моему Fishbrain-коллеге в Стамбуле, Волкану. Он приютил нашу кошку на целых полгода, сделал все эти тесты и очень помог с получением вет.справки (узнавал, что да как, переводил на английский для меня) в Турции. Не будь его, полетела бы Варежка обратно в Россию. Он спас нас от этого, и я невероятно признателен ему 🙏🏾. И вот, когда результат был получен, мы прилетели за ней в Турцию, и вернулись уже в Нючёпинг вместе. В аэропорту просмотрели вет.справку, с результатом теста на антитела и поставили печать. А теперь Варежка ещё и первая из всех обрела шведский паспорт, чтобы было проще путешествовать и возвращаться в ЕС 😄

Ещё в тему про сокращения Часто слышу в русскоязычных ИТ-чатиках (в других не сижу, к сожалению), что мол «Вот дураки эти Гугл/Микрософт/Амазон, понахайрют овердофига народу, а теперь сокращают. Можно же было прикинуть на коленке, что так много им не надо, и никого не сокращать». Мне кажется довольно забавным, когда айтишники, сами не имевшие и не руководившие бизнесом, начинают рассуждать на тему «Как правильно растить бизнес». Есть в этом что-то русское, когда каждый считает себя экспертом в экономике/внешней политике/медицине и т.д. Я вот сам никогда бизнеса не имел. Но всё же мне кажется, люди, работающие на подобных должностях десятилетями и осилившие пробиться сквозь нереальный конкурс в топ-10 корпорации, могут понимать в этом немного больше нас.

Сокращения Ну штош, вот и к нам в Fishbrain добрался тренд всея айтишки: на прошлой неделе CEO собрал всех и объявил, что компания вынуждена сократить около 15-20% сотрудников, ведь мы всё ещё не прибыльны, а с инвестициями сейчас туго. Ещё год назад позиция руководства и инвесторов была в духе «Завоюйте рынок, растите количество юзеров и всё будет, а в прибыль выйдете как-нибудь потом» (тоже самое делал до сих пор по моим ощущениям Спотифай). Теперь же, на фоне кризиса в экономике, перешли к более аккуратному «Начните генерить деньги, тогда закинем денег». Так что пришло время затянуть пояса и увольнять людей вслед за ИТ-гигантами. Сам процесс сокращений в Швеции, похоже, довольно сильно бюрократизирован. Вдобавок к стандартным 3 месяцам notice period (увольняешься ли ты сам, или тебя увольняет компания — неважно), добавляются ещё и переговоры с профсоюзами, которые могут серьёзно влиять на процесс. Сокращая сотрудников, нельзя сказать «Хочу избавиться от Васи и Пети»: вы отрисовываете новую структуру компании, описываете, какие роли хотите сохранить, какие порезать, и идёте с этим к профсоюзу. Казалось бы, какая разница, если можно так написать роли, чтобы было понятно, кого надо уволить? Но всё не так просто. Во-первых, действует правило «First in — last out». Соответственно, чем дольше вы проработали, тем ниже риск попасть под сокращение. Во-вторых профсоюз вместе с компанией рассматривает профили и компетенции сотрудников и может порекомендовать оставить Васю, который и девопс, и фулл стек, и ИО бухгалтера, если все эти роли остаются в новой структуре, но узко-специализированных ребят. Не знаю, как это выглядит на практике, это всё со слов нашего техдира. Насколько я могу судить, мои шансы вылететь невилики, но в силу вышеперечисленного, всё же отличны от нуля. Через две недели, когда закончатся переговоры с профсоюзами, всё должно проясниться. Инфа не NDA-ная — новость о сокращениях в компании была опубликована в газете.

Когда я в первый раз заходил в дом, снял на видео первые впечатления. Видос долгий и не слишком динамичный, лучше смотреть x2
+8
Когда я в первый раз заходил в дом, снял на видео первые впечатления. Видос долгий и не слишком динамичный, лучше смотреть x2. Ну и немного ноябрьского Нючёпинга вам :)

Final переезд в Nyköping В ноябре мы наконец переехали на постоянное место жительства. Этому предшествовали: 1 месяц жизни в Airbnb по приезду в прекраснейшей и заповедной Nacka; 2 месяца там же у коллеги, полетевшего в Америку в командировку и 3 месяца жизни в Gustavsberg, пока ждали, когда достроят дом в Нючёпинге. Густавсберг остался в наших с женой сердцах!. И вот, наконец, мы в first hand rental (снятом напрямую у компании бессрочно) таунхаусе в Nyköping, в 100 км от Стокгольма. Нючёпинг был выбран около-рандомным тыком в карту: хотели попробовать пожить вне Стокгольма, в ±глубинке, но чтобы до Стокольма можно было удобно доехать (чтобы мне катать в офис раз в неделю, на скоростном поезде 1 час до центра), чтобы рядом было море и бассейн (желания жены), ну и в целом миленький городок а-ля мой родной Троицк. Пришлось долго проковыряться с транспортом для переезда: к тому моменту уже был куплен стол с подъёмным механизмом, так что ни пешком, ни на легковом такси уже было не уехать. Позвонил в три сервиса по аренде минивэнов с грузовым отсеком, везде отказали «по-шведски»: не перезванивали, а когда я не выдержал и позвонил сам — за 2 минуты сказали «ой, сорян, все машины разбронированы, ага, ну удачи». Бесит! Благо, в Швеции распространён каршеринг v0.5 (есть и v1.0, но для него нужен BankID, которого у меня пока нет): в двух популярных сетях заправок можно прийти (можно забронировать заранее) и взять машину напрокат посуточно. Есть легковухи, есть минивэны, есть грузовые с подъёмным механизмом. Мы выбрали минивэн. Спасибо CirkleK Hyrbil! Обошлось в 200-250 евро с топливом. Переезжали в два дня: в первый я приехал без всего на электричке принять заказ от Икеи (вместе с матрасом и постельном бельём, на котором я и заночевал в эту ночь 🙂 ), на следующий день на минивэне уже приехал обратно за семьёй и вещами, погрузились и отправились в новый дом. И вот, мы осели! 🙂 Жильё 75 квадратов, второй этаж, выход на террасу, евротрёшка (это когда 2 спальни и 30 квадратная кухня-зал), 950 евро в месяц без электричества. Платёжка на электричество вызывает судорожное предвкушение, т.к. отопление электричеством, что выражается в 1700 квт*ч в месяц. Ждём первую.

Факап 2.0 Привет! Больше месяца не выходил на связь: сначала летал в отпуск в Турцию (виделись с мамой и тещёй, вернулся в Швецию с тромбоном и кошкой), потом было лень, а потом у нас упала главная перегрузка данных на две недели, пока позавчера я её не дочинил. Но обо всём по порядку и сегодня про data outage. Помните, я рассказывал про свой первыйполуторный) в жизни серьёзный факап в продакшне? Так то, оказывается, был не факап, а лёгкая прогулка со счастливым концом. А вот 1 декабря, через день после невинного сообщения в слаке от девопсов: «мы тут завтра будем базу апдейтить, надеюсь, всё будет норм, но посмотрим» когда базу основного приложения обновили с MySQL 5.7 до версии 8.0, у нас встала колом перегрузка данных из неё. Настали беспокойные дни: в логах джобы практически пустота, в духе «коннекшн чёт упал по таймауту», в кишках MySQL особо никто не разбирается, все очевидные конфиги базы с таймаутами подняли до 4 часов, но джобы продолжают падать. Заметили, что стабильно падают одни и те же таблицы. Поделав запросы к справочным таблицам MySQL'а, обнаружили, что проблемы возникают с таблицами, которые >±1 ГБ, остальные же грузятся без проблем, с той же скоростью, что и прежде. Но стоит таблице быть на 100 МБ больше порога — и она повисает при перегрузке навечно. Поддержка AWS показала себя неповоротливой и бездумно следующей нелепым рекомендациям: посоветовали пересобрать в таблице статистику по индексам, при том, что в перегрузках используется выражение SELECT * FROM TABLE, грузящее всё таблицу целиком, и индексы, естественно, не используются. Быстро стало понятно, что спасение утопающих — дело рук самих утопающих. Для перегрузки мы использовали PySpark, крутяющийся на кластере от AWS — Glue. Окей, решил я, раз перегрузка втупую не работает, давай тащить по частям, нарезая данные по какому-нибудь индексированному столбцу. И тут я словил второй бугурт от AWS: они умудрились сломать фундаментальную функциональность замечательного спарка — правильно и оптимально тащить из БД данные в параллель и по частям! Они эту функциональность переделали, но так, что в MySQL она приводила к параллельным запросам ВСЕЙ таблицы в несколько потоков, вместо того, чтобы запрашивать в каждом потоке свой кусочек. А теперь представьте, что у вас есть таблица на 100 ГБ, которую вы решили порезать на куски по 100 МБ. Да-да, вы только что сделали 1000 запросов к базе на сканирование всей таблицы целиком, и теперь она исполняет запрос на 100 ТБ суммарно. Браво, амазон. Окей, но в Glue же можно использовать обычные нормальные спарковские датафреймы, без переделанных амазоном функций? Дока говорит, что да, просто напиши дополнительные параметр, и всё будет работать как и прежде. Но...))) Нет, они и это сломали! При попытке задать такой параметр, всё тихо падает с какой-то невнятной ошибкой, даже если тупо скопипастить код из официальной документации. Бугурт 2.0, браво амазон 2.0. В итоге пришлось отказаться от их кластера и просто собрать свой собственный спарк на собственной виртуалке, который прекрасно и без проблем отрабатывает джобы. Желание перенести всё, что исторически оставалось на амазоне, в гугловское облако выросло раз, эдак, в десять. AWS, если ты читаешь эти строки, надеюсь тебе хотя бы стыдно.