DE++ от Валентина
Обзорный доклад про распределенные SQL-движки и оптимизации в них От чуваков, которые разрабатывают новые БД и системы к ним(!) Парни контрибьютили в Apache Calcite и Apache Ignate. И есть примеры и ссылки на исходники(!) Примеры не только из того что они…
Хороший доклад от Владимира. Примерно на половину повторяет прошлый доклад, но уже про другие SQL-движки.
По сути, тоже обзорный, но с большей степенью погружения во внутренности, что конечно же круто и выгодно отличает от других обзорных докладов.
Плюс каждый компонент в Presto/Trino присутствует в Spark в том или ином виде, что позволяет посмотреть на него со стороны. Понять, что это набор определённых технических решений и вообще-то есть другие способы сделать, то что делает спарк.
+ есть упоминание реальной задачи на динамическое программирования в оптимизаторе запросов. Просто для меня немного утвердится, что я не зря литкод решаю
По сути, тоже обзорный, но с большей степенью погружения во внутренности, что конечно же круто и выгодно отличает от других обзорных докладов.
Плюс каждый компонент в Presto/Trino присутствует в Spark в том или ином виде, что позволяет посмотреть на него со стороны. Понять, что это набор определённых технических решений и вообще-то есть другие способы сделать, то что делает спарк.
+ есть упоминание реальной задачи на динамическое программирования в оптимизаторе запросов. Просто для меня немного утвердится, что я не зря литкод решаю
YouTube
Владимир Озеров — Как устроено выполнение SQL-запросов в Presto/Trino
Подробнее о конференции SmartData: https://jrg.su/aTWU2K
— —
Presto/Trino — это распределенный SQL-движок с serverless-архитектурой, который позволяет выполнять федеративные запросы по данным произвольного объема.Спикер рассмотрит, как устроено выполнение…
— —
Presto/Trino — это распределенный SQL-движок с serverless-архитектурой, который позволяет выполнять федеративные запросы по данным произвольного объема.Спикер рассмотрит, как устроено выполнение…
Статья на минут 40 (если выполнять все шаги) в которой мы делаем свою простейшую систему сборки для Java.
Единственный минус статьи — скрипты написаны для Windows, но добрый человек в комментариях написал на баше.
Почему вдруг я заинтересовался билд системами?
Ну пару недель назад у меня была задача перенести внутреннюю библиотеку с версии scala 2.11 и spark 2.3 на 2.12-3.3.
Я конечно же решил пойти сложным путём и сделать кросс-компиляцию сразу для двух версий. И это заняло у меня слишком много времени.
Да, были проблемы не от меня зависящие:
1) У нас везде Gradle, а не Sbt где это есть в коробке
2) Плагин gradle-crossbuild-scala иногда больше мешал чем помогал и тд
Но больше всего мне мешало и бесило моё магическое мышление в отношении градла и в целом любой билд системы. За N лет я уже успел поработать на проектах с Maven, Gradle и Sbt. И ни разу не пытался разобраться, что там вообще происходит. А файлик с билдом пытался лишний раз не заглядывать.
Сейчас уже стало немного лучше. Дока и статейки почитаны. Доклады посмотрены.
Допы:
Умный мужчина рассказывает почему полезно самому писать велосипеды — у меня было такие мысли, но не так хорошо выражены
Большой список «Сделай сам»
Единственный минус статьи — скрипты написаны для Windows, но добрый человек в комментариях написал на баше.
Почему вдруг я заинтересовался билд системами?
Ну пару недель назад у меня была задача перенести внутреннюю библиотеку с версии scala 2.11 и spark 2.3 на 2.12-3.3.
Я конечно же решил пойти сложным путём и сделать кросс-компиляцию сразу для двух версий. И это заняло у меня слишком много времени.
Да, были проблемы не от меня зависящие:
1) У нас везде Gradle, а не Sbt где это есть в коробке
2) Плагин gradle-crossbuild-scala иногда больше мешал чем помогал и тд
Но больше всего мне мешало и бесило моё магическое мышление в отношении градла и в целом любой билд системы. За N лет я уже успел поработать на проектах с Maven, Gradle и Sbt. И ни разу не пытался разобраться, что там вообще происходит. А файлик с билдом пытался лишний раз не заглядывать.
Сейчас уже стало немного лучше. Дока и статейки почитаны. Доклады посмотрены.
Допы:
Умный мужчина рассказывает почему полезно самому писать велосипеды — у меня было такие мысли, но не так хорошо выражены
Большой список «Сделай сам»
Хабр
Делаем свою простейшую систему сборки для Java
Довелось мне обучать одного знакомого, желающего войти в ИТ (привет, Саша!). Человек он упорный, прошел разные курсы, стажировки, упорно продолжает идти вперед и уже вполне тянет на уровень джуна. Но...
Восполнял недостаток опыта работы со Спарком с БД через JDBC путём созерцания исходников. Потому что на работу почти исключительно только hdfs.
И наткнулся на полезный нюанс:
1) Есть оптимизация «nested column pruning» (Не читаем колонки во вложенной структуре)
2) Спарк это поддерживает для ORC и Parquet (Но раньше нет)
3) Но до сих пор не поддерживает для jdbc
4) Учитывая что таске 4 год пошёл - это никому и не надо
И наткнулся на полезный нюанс:
1) Есть оптимизация «nested column pruning» (Не читаем колонки во вложенной структуре)
2) Спарк это поддерживает для ORC и Parquet (Но раньше нет)
3) Но до сих пор не поддерживает для jdbc
4) Учитывая что таске 4 год пошёл - это никому и не надо
Как же хорош последний пост Вастрика
Думаю, вся проблема в том, что те, кто пришли в ИТ из-за того, что им нравится программировать и изначально это было их хобби, продолжают смешивать хобби и работу
А так лучше не делать. На работе надо работать и изучать что будет ПОЛЕЗНО и иногда интересно.
А в свободное время в виде хобби можно изучать что ПО КАЙФУ, делать пет-проекты, опенсорсить или не программировать, а крестиком вышивать.
Я свою прививку от грусти от того, что твой код в любой момент могут выкинуть, получил ещё на первой работе. Когда примерно год занимался не понятно чем. Поэтому сейчас отношусь сильно проще к этому.
И стараюсь подходить к задачам со здоровым прагматизмом:
1) Стараюсь выбирать задачи, которые одновременно и полезные, и интересные мне -> Если придётся код выкинуть или переписать, то мне не так обидно, потому что было интересно и строчку в резюме написать можно.
2) Задача суперскучная? Переименовать поле в таблице? Пройтись по всем проектам и поправить одну строчку? -> Давайте две! Голова отдохнет. Смогу дочитать статью, отложенную в миллиарде открытых вкладок в браузере «на потом» или доклад/лекцию посмотреть и т.д
Думаю, вся проблема в том, что те, кто пришли в ИТ из-за того, что им нравится программировать и изначально это было их хобби, продолжают смешивать хобби и работу
А так лучше не делать. На работе надо работать и изучать что будет ПОЛЕЗНО и иногда интересно.
А в свободное время в виде хобби можно изучать что ПО КАЙФУ, делать пет-проекты, опенсорсить или не программировать, а крестиком вышивать.
Я свою прививку от грусти от того, что твой код в любой момент могут выкинуть, получил ещё на первой работе. Когда примерно год занимался не понятно чем. Поэтому сейчас отношусь сильно проще к этому.
И стараюсь подходить к задачам со здоровым прагматизмом:
1) Стараюсь выбирать задачи, которые одновременно и полезные, и интересные мне -> Если придётся код выкинуть или переписать, то мне не так обидно, потому что было интересно и строчку в резюме написать можно.
2) Задача суперскучная? Переименовать поле в таблице? Пройтись по всем проектам и поправить одну строчку? -> Давайте две! Голова отдохнет. Смогу дочитать статью, отложенную в миллиарде открытых вкладок в браузере «на потом» или доклад/лекцию посмотреть и т.д
vas3k.blog
Pets vs. Cattle
«Питомцы vs. Скот». 99% вашей работы в итоге выбросят. Но это и сделает вас профессионалом
❤2👍1
На прошлой неделе я первый раз поучаствовал в хакатоне.
Зачем? Есть у меня кое-какие планы, что делать ближайшие полгода-год. Научится работать в более быстром темпе и мочь сделать MVP в короткие сроки – первые шаги в этих планах.
С технической точки зрения ничего уникального не было. Нужно было сделать бек и фронт. В бек части мы хотели сделать минимально рабочий ci-cd, но напоролись на недостаток опыта и потратили много времени на эту часть. В итоге, наша команда не вошла даже в топ 10, но это не главное, что я хотел оттуда получить.
Но вот какие вещи я для себя вынес в плане опыта:
1) Хорошо, что я начал углубляться в DevOps штуки. (Скоро расскажу подробности)
Для быстрой разработки - без этого никуда. Настроить моментальную обратную связь с проектом необходимо, чтобы не обновлять изменения руками каждый раз теряя при этом время. И настроить быстро. Желательно иметь уже готовый шаблон, который развернуть минут за 30 на проект с нуля.
2) Не хватает знания фронтенда. У меня уже было несколько попыток начать, но бросал в самом начале. Буду закрывать это после devops.
3) Я немного растерял навыки бекэнда за 2 DE-шных года. Надо возвращать. Возможно, в ближайшем будущем попробую FastApi.
4) Хакатон хороший вариант познакомится с людьми. 2 дня плотной работы очень ясно дадут понять хочешь ли ты работать с кем-то из команды или нет.
В принципе желание участвовать не отбило, но теперь более серьёзные критерии будут при выборе:
1) Если хочется победить, то идти только с уже +- проверенными людьми. Конфликтует с 4 пунктом. Но тут надо выбирать - новые знакомства или победа.
2) Надо минимум 2 человека на специализацию. Команда не должна зависеть от одного человека. Наверное, можно пренебречь если выполнить 1 пункт.
3) Желательно, оффлайн. Потому что онлайн я попробовал и хочется по-другому тоже попробовать. Из плюсов думаю будет: более быстрая и простая коммуникация и меньше шансов отвлекаться. Но надо пробовать, а не думать.
Зачем? Есть у меня кое-какие планы, что делать ближайшие полгода-год. Научится работать в более быстром темпе и мочь сделать MVP в короткие сроки – первые шаги в этих планах.
С технической точки зрения ничего уникального не было. Нужно было сделать бек и фронт. В бек части мы хотели сделать минимально рабочий ci-cd, но напоролись на недостаток опыта и потратили много времени на эту часть. В итоге, наша команда не вошла даже в топ 10, но это не главное, что я хотел оттуда получить.
Но вот какие вещи я для себя вынес в плане опыта:
1) Хорошо, что я начал углубляться в DevOps штуки. (Скоро расскажу подробности)
Для быстрой разработки - без этого никуда. Настроить моментальную обратную связь с проектом необходимо, чтобы не обновлять изменения руками каждый раз теряя при этом время. И настроить быстро. Желательно иметь уже готовый шаблон, который развернуть минут за 30 на проект с нуля.
2) Не хватает знания фронтенда. У меня уже было несколько попыток начать, но бросал в самом начале. Буду закрывать это после devops.
3) Я немного растерял навыки бекэнда за 2 DE-шных года. Надо возвращать. Возможно, в ближайшем будущем попробую FastApi.
4) Хакатон хороший вариант познакомится с людьми. 2 дня плотной работы очень ясно дадут понять хочешь ли ты работать с кем-то из команды или нет.
В принципе желание участвовать не отбило, но теперь более серьёзные критерии будут при выборе:
1) Если хочется победить, то идти только с уже +- проверенными людьми. Конфликтует с 4 пунктом. Но тут надо выбирать - новые знакомства или победа.
2) Надо минимум 2 человека на специализацию. Команда не должна зависеть от одного человека. Наверное, можно пренебречь если выполнить 1 пункт.
3) Желательно, оффлайн. Потому что онлайн я попробовал и хочется по-другому тоже попробовать. Из плюсов думаю будет: более быстрая и простая коммуникация и меньше шансов отвлекаться. Но надо пробовать, а не думать.
❤🔥5
Отличный доклад от Кирилла Мокевнина про конечные автоматы.
Он не про DE абсолютно, и я бы его посоветовал его посмотреть каждому программисту.
Я правда не хочу спойлерить и перепечатывать куски доклада. Просто скажу, что когда я посмотрел «первую редакцию» n лет назад, то он сильнейшим образом повлиял на меня и образ мыслей.
Я не знаю почему (возможно я прослушал), но из универа я запомнил конечные автоматы, как штуки, которые ходят по строкам и валидируют их. А регулярные выражения — это просто малюсенькая часть куда можно применить автоматы.
Первый доклад с плохим звуком и видео, очень фронтенд ориентированная. Объясняющая почему реакт был круче других фреймворков 7 лет назад
Он не про DE абсолютно, и я бы его посоветовал его посмотреть каждому программисту.
Я правда не хочу спойлерить и перепечатывать куски доклада. Просто скажу, что когда я посмотрел «первую редакцию» n лет назад, то он сильнейшим образом повлиял на меня и образ мыслей.
Я не знаю почему (возможно я прослушал), но из универа я запомнил конечные автоматы, как штуки, которые ходят по строкам и валидируют их. А регулярные выражения — это просто малюсенькая часть куда можно применить автоматы.
Первый доклад с плохим звуком и видео, очень фронтенд ориентированная. Объясняющая почему реакт был круче других фреймворков 7 лет назад
YouTube
Кирилл Мокевнин, Конечные автоматы как способ значительно упростить логику и понимание кода
Kolesa Conf'23, доклад
В этом докладе мы увидим, что практически любая бизнес-логика в коде укладывается в модель конечного автомата, то есть состоит из набора состояний и переходов между ними. Такой взгляд на происходящее позволит изменить подход к проектированию…
В этом докладе мы увидим, что практически любая бизнес-логика в коде укладывается в модель конечного автомата, то есть состоит из набора состояний и переходов между ними. Такой взгляд на происходящее позволит изменить подход к проектированию…
👍2❤🔥1
«На энтузиазме далеко не уедешь»
Кто сказал не важно. Но я это однозначно сам прочувствовал много раз, но всё равно попадаюсь на это с периодичностью в n месяцев.
Ходить далеко не надо: пример контрибьюта в спарк.
Очень был замотивирован в самом начале и особенно сильно после первого успеха. Но каждый день мотивация постепенно сходит на нет. Маленькая проблема или слишком долгая обратная связь только усиливает эффект.
Конкретно в этот раз я приуныл от того, что скорее всего то изменение над которым я корпел неделю по часу после работы и литкоды не очень и было нужно + никто не говорит, что оно не надо и продолжают ревьють))
Историю PR можно посмотреть ТУТ
Обычно после разочарования идёт какая-то пост-рационализация аля: «Ну это никому и не особо нужно было и на собесах всем пофиг» или «Там DataBricks капитализация >30B, а я бесплатно волонтёрю». Но я думаю это не особо важная часть.
Поэтому я решил вместо одной деятельности заняться 3 другими🤡 и подкрепить какой-то ещё мотиваций. О видах мотивации и моих активностях расскажу, но уже в следующем посте.
DE++ от Валентина
Кто сказал не важно. Но я это однозначно сам прочувствовал много раз, но всё равно попадаюсь на это с периодичностью в n месяцев.
Ходить далеко не надо: пример контрибьюта в спарк.
Очень был замотивирован в самом начале и особенно сильно после первого успеха. Но каждый день мотивация постепенно сходит на нет. Маленькая проблема или слишком долгая обратная связь только усиливает эффект.
Конкретно в этот раз я приуныл от того, что скорее всего то изменение над которым я корпел неделю по часу после работы и литкоды не очень и было нужно + никто не говорит, что оно не надо и продолжают ревьють))
Историю PR можно посмотреть ТУТ
Обычно после разочарования идёт какая-то пост-рационализация аля: «Ну это никому и не особо нужно было и на собесах всем пофиг» или «Там DataBricks капитализация >30B, а я бесплатно волонтёрю». Но я думаю это не особо важная часть.
Поэтому я решил вместо одной деятельности заняться 3 другими
DE++ от Валентина
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
[SPARK-42304][FOLLOWUP][SQL] Add test for `GET_TABLES_BY_TYPE_UNSUPPORTED_BY_HIVE_VERSION` by valentinp17 · Pull Request #42884…
What changes were proposed in this pull request?
Add test for getTablesByType function to cover error class "UNSUPPORTED_FUNCTION_BY_HIVE_VERSION" added in PR #42706
Why are the changes...
Add test for getTablesByType function to cover error class "UNSUPPORTED_FUNCTION_BY_HIVE_VERSION" added in PR #42706
Why are the changes...
👍6❤1
Так вот, чем я решил нагрузить себя вместо ковыряния спарка и какими мотивациями я их подкрепил:
1) Вступил в рабочую группу Potogonn где надо писать посты каждый день при поддержке Фила и Всеволода. Так что должен буду писать регулярно и взаимодействовать с другими участниками + заставили завести твиттер т_т
Мотивация: дедлайны, долгосрочная инвестиция (в личный бренд)
2) Вступил в учебную группу от Влада Тена — мешки ворочать тоже надо
Концепция такая – выбирается какой-то открытый курс крутого универа по CS.
На неделю выдаются планы, что делать. На выходных созвон на которых мы обсуждаем, что непонятно и шеймим того кто не выполнил план (шутка).
Первый курс про БД от Andy Pavlo в CMU.
Как наберётся контента – напишу подробнее. На прошлой неделе пока что только посмотрел 2 лекции и собрал проект. Придётся окунутся в C++ и OS.
Мотивация: мне интересно, строгие дедлайны, ощущение конкурентности (если другие смогли, то я тоже смогу)
3) Прохожу набор курсов от хекслет DevOps для Программистов – в описании всё есть. Уже прошёл 2 курса: по командной строке и Ansible. Пока очень нравится. Пару вещей уже начал применять на работе.
Мотивация: мне нужно (на текущей и будущей работе). Заплатил деньги и теперь жаба душит не использовать (даже если деньги не мои)
Мой твиттер - думаю буду писать часть постов отсюда + что-то небольшое и быстрое что сюда лучше не стоит
Тред где Андрей хорошо продолжил мой пост про энтузиазм
DE++ от Валентина
1) Вступил в рабочую группу Potogonn где надо писать посты каждый день при поддержке Фила и Всеволода. Так что должен буду писать регулярно и взаимодействовать с другими участниками + заставили завести твиттер т_т
Мотивация: дедлайны, долгосрочная инвестиция (в личный бренд)
2) Вступил в учебную группу от Влада Тена — мешки ворочать тоже надо
Концепция такая – выбирается какой-то открытый курс крутого универа по CS.
На неделю выдаются планы, что делать. На выходных созвон на которых мы обсуждаем, что непонятно и шеймим того кто не выполнил план (шутка).
Первый курс про БД от Andy Pavlo в CMU.
Как наберётся контента – напишу подробнее. На прошлой неделе пока что только посмотрел 2 лекции и собрал проект. Придётся окунутся в C++ и OS.
Мотивация: мне интересно, строгие дедлайны, ощущение конкурентности (если другие смогли, то я тоже смогу)
3) Прохожу набор курсов от хекслет DevOps для Программистов – в описании всё есть. Уже прошёл 2 курса: по командной строке и Ansible. Пока очень нравится. Пару вещей уже начал применять на работе.
Мотивация: мне нужно (на текущей и будущей работе). Заплатил деньги и теперь жаба душит не использовать (даже если деньги не мои)
Мой твиттер - думаю буду писать часть постов отсюда + что-то небольшое и быстрое что сюда лучше не стоит
Тред где Андрей хорошо продолжил мой пост про энтузиазм
DE++ от Валентина
🔥3👍1
Сегодня и завтра буду на highload++ 2023
Первый раз на конфе такого размера. Обычно только по митапам ходил.
Если кто-то тоже идёт – пишите!
В комментариях будут доклады этого дня, которые мне интересны (в порядке убывания) и какие-то посты по ходу конференции, чтобы не засорять ленту канала
Первый раз на конфе такого размера. Обычно только по митапам ходил.
Если кто-то тоже идёт – пишите!
В комментариях будут доклады этого дня, которые мне интересны (в порядке убывания) и какие-то посты по ходу конференции, чтобы не засорять ленту канала
🔥2
Сходил на Highload++ и сильно разочарован
Вот что вы ожидаете когда идёте на большую конференцию?
Я ожидаю крутые доклады и возможность пообщаться с людьми.
И, мне кажется, идея со стендами компаний, где выдают мерч за разные (в основном тупые) активности убивает оба ожидания.
Вся конфа превращается в какую-то ярмарку с огромными очередями и попытками компаний перетянуть как можно больше людей к себе и собрать их личные данные.
И ты либо забиваешь на доклады и спокойно жрёшь, собираешь бесполезную хрень со стендов и стоишь в очередях.
ИЛИ
бегаешь с доклада на доклад, но поговорить тоже не особо получается – удобных мест для разговора нет, либо стулья в местах с едой, либо болтай стоя. Ну и часть возможных собеседников стоят в очереди, потому что все мы люди и падки на халяву. Ведь 50к за билет платит компания, а плюшевую хрень и стикеры за 100 рублей получаешь ты.
Есть ещё пункт, что в среднем доклады были так себе, но это слишком субъективное и возможно я за год просто посмотрел всё, что стоило посмотреть. И теперь надо искать на английском или другой источник (лекции, науч. статьи)
Не иронично в следующий раз попробую заставить компанию оплатить билет на Переделоно Конф.
DE++ от Валентина
Вот что вы ожидаете когда идёте на большую конференцию?
Я ожидаю крутые доклады и возможность пообщаться с людьми.
И, мне кажется, идея со стендами компаний, где выдают мерч за разные (в основном тупые) активности убивает оба ожидания.
Вся конфа превращается в какую-то ярмарку с огромными очередями и попытками компаний перетянуть как можно больше людей к себе и собрать их личные данные.
И ты либо забиваешь на доклады и спокойно жрёшь, собираешь бесполезную хрень со стендов и стоишь в очередях.
ИЛИ
бегаешь с доклада на доклад, но поговорить тоже не особо получается – удобных мест для разговора нет, либо стулья в местах с едой, либо болтай стоя. Ну и часть возможных собеседников стоят в очереди, потому что все мы люди и падки на халяву. Ведь 50к за билет платит компания, а плюшевую хрень и стикеры за 100 рублей получаешь ты.
Есть ещё пункт, что в среднем доклады были так себе, но это слишком субъективное и возможно я за год просто посмотрел всё, что стоило посмотреть. И теперь надо искать на английском или другой источник (лекции, науч. статьи)
Не иронично в следующий раз попробую заставить компанию оплатить билет на Переделоно Конф.
DE++ от Валентина
😢6👍1
CMU Intro to Database Systems - Часть 1
Последние две недели смотрю, наверное, лучший университетский курс по БД.
Так тут будет тред про этот курс + задачи + ещё мои заметки по теме
Сначала пункты почему я считаю, что он лучший:
1) Лектор – Andy Pavlo, однозначно крутой спец, рассказывает интересно и понятно, преподают уже кучу лет, статьи научные пишет, свой стартап по БД OtterTune, на лекции первые слайды – новости в индустрии. В общем, на острие науки про БД мужик. Почувствуете его крутость с первой лекции.
2) Слайды на лекциях – моё почтение.
Даже если по описанию какого-то алгоритма ничего не понятно, то после слайдов с пошаговым объяснением понимание приходит.
3) Всё в открытом доступе – все свежие лекции в хорошем качестве и монтаже лежат на ютубе. Там же ссылки на конспекты и слайды. Лекции выкладывают почти сразу. Этот курс в 2023 закончился неделю назад.
А самое главное есть доступ к приёмочной системе практических задач! Я такого не видел, обычно даже самые крутые университеты так не делают.
За этого Andy, конечно, огромный респект
4) Хардкор – ну тут и так понятно. Заглядывают внутрь работы БД очень глубоко.
Требования к курсу – архитектура компьютера и С++, если выполнять практические задания. Но думаю, можно добирать знания по ходу курса, если будет не хватать.
После таких вводных вспоминаю свои 2 семестра по БД в итмо и плакать хочется.
Сайт курса
Ссылка на лекции на YouTube
DE++ от Валентина
Последние две недели смотрю, наверное, лучший университетский курс по БД.
Так тут будет тред про этот курс + задачи + ещё мои заметки по теме
Сначала пункты почему я считаю, что он лучший:
1) Лектор – Andy Pavlo, однозначно крутой спец, рассказывает интересно и понятно, преподают уже кучу лет, статьи научные пишет, свой стартап по БД OtterTune, на лекции первые слайды – новости в индустрии. В общем, на острие науки про БД мужик. Почувствуете его крутость с первой лекции.
2) Слайды на лекциях – моё почтение.
Даже если по описанию какого-то алгоритма ничего не понятно, то после слайдов с пошаговым объяснением понимание приходит.
3) Всё в открытом доступе – все свежие лекции в хорошем качестве и монтаже лежат на ютубе. Там же ссылки на конспекты и слайды. Лекции выкладывают почти сразу. Этот курс в 2023 закончился неделю назад.
А самое главное есть доступ к приёмочной системе практических задач! Я такого не видел, обычно даже самые крутые университеты так не делают.
За этого Andy, конечно, огромный респект
4) Хардкор – ну тут и так понятно. Заглядывают внутрь работы БД очень глубоко.
Требования к курсу – архитектура компьютера и С++, если выполнять практические задания. Но думаю, можно добирать знания по ходу курса, если будет не хватать.
После таких вводных вспоминаю свои 2 семестра по БД в итмо и плакать хочется.
Сайт курса
Ссылка на лекции на YouTube
DE++ от Валентина
👍3🔥2
Лекция 1:
В 2023 плохой звук, можно посмотреть из 2022, там тоже самое, но звук чуть лучше
История БД, проблемы создания БД, как жили до реляционной модели, реляционная модель и р. алгебра и по верхам noSQL
Лекция 2:
Введение в SQL. Все основные конструкции, включая окна. Это примерно все знают. Так что дальше
Лекция 3:
Уже пошла мякотка. Для DE тоже можно узнать новое.
Разные типы памяти, почему Операционные Системы - это "враг" БД. Почему нельзя использовать виртуальную память, когда пишешь БД. Как БД хранит страницы. Хранение по картежам. Слотированные страницы.
Лекция 4:
Разные способы организации записи и чтения данных: Heap Storage, Log-structured storage и index-organized storage.
Word-aligned tuples и способы решения. (Вот этого я не знал, очень понравилась демонстрационная часть с PostgreSQL)
Как хранятся разные типы данных, null значения.
Лекция 5:
Типы нагрузок БД: OLTP, OLAP, Hybrid. Storage Models: хранение по строкам или колонкам. Как это физически организовано. Разные методы кодировок: RLE, Bit packing, dictionary и т.д.
Слайды опять хочется похвалить. Смотреть одно удовольствие.
Вообще, лекции 3-5 сильно пересекаются с начальными главами Кабанчика и Database Internals.
Но мне после этих лекций (и видео контента в целом) было проще читать эти главы, так как уже есть общее представление.
DE++ от Валентина
В 2023 плохой звук, можно посмотреть из 2022, там тоже самое, но звук чуть лучше
История БД, проблемы создания БД, как жили до реляционной модели, реляционная модель и р. алгебра и по верхам noSQL
Лекция 2:
Введение в SQL. Все основные конструкции, включая окна. Это примерно все знают. Так что дальше
Лекция 3:
Уже пошла мякотка. Для DE тоже можно узнать новое.
Разные типы памяти, почему Операционные Системы - это "враг" БД. Почему нельзя использовать виртуальную память, когда пишешь БД. Как БД хранит страницы. Хранение по картежам. Слотированные страницы.
Лекция 4:
Разные способы организации записи и чтения данных: Heap Storage, Log-structured storage и index-organized storage.
Word-aligned tuples и способы решения. (Вот этого я не знал, очень понравилась демонстрационная часть с PostgreSQL)
Как хранятся разные типы данных, null значения.
Лекция 5:
Типы нагрузок БД: OLTP, OLAP, Hybrid. Storage Models: хранение по строкам или колонкам. Как это физически организовано. Разные методы кодировок: RLE, Bit packing, dictionary и т.д.
Слайды опять хочется похвалить. Смотреть одно удовольствие.
Вообще, лекции 3-5 сильно пересекаются с начальными главами Кабанчика и Database Internals.
Но мне после этих лекций (и видео контента в целом) было проще читать эти главы, так как уже есть общее представление.
DE++ от Валентина
👍4🔥3
Возвращаемся к жизни
Нулевой проект занял больше времени, чем я предполагал. А потом я уронил прод на работе и завертелось…
Так что пока что обзор на 2 лекции
Лекция 6:
Сущность «Buffer Pool», что он в целом делает в БД, способы оптимизации. Немного про алгоритмы выбора, что кешировать. Clock и LRU-кеши. Проблемы записи данных. Опять борьба БД с OS, fsync
Вся информация кроме алгоритмов кешей для меня была абсолютно новая. Очень круто.
Лекция 7:
С одной стороны, это обзорная лекция и весь контент уже есть в вики. С другой, я бы его так и не прочитал. Видео контент мне заходит легче.
В целом просто хорошая лекция про хеширование. Можно смотреть в отрыве от курса про бд! Многое узнал (потому что не особо интересовался)
Static и Extendible Hashing, Linear probe, Cuckoo (Я вообще не знал про это), Chained, Linear Hashing.
Быстро, но понятно про Bloom Filter.
После лекции стало понятно, что значит "probe miss" в Спарке у HashAggregate.
+ на фоне разворачивается побочная романтическая история❤️
hur.st/bloomfilter - Наглядная ссылка про Bloom Filter
DE++ от Валентина
Нулевой проект занял больше времени, чем я предполагал. А потом я уронил прод на работе и завертелось…
Так что пока что обзор на 2 лекции
Лекция 6:
Сущность «Buffer Pool», что он в целом делает в БД, способы оптимизации. Немного про алгоритмы выбора, что кешировать. Clock и LRU-кеши. Проблемы записи данных. Опять борьба БД с OS, fsync
Вся информация кроме алгоритмов кешей для меня была абсолютно новая. Очень круто.
Лекция 7:
С одной стороны, это обзорная лекция и весь контент уже есть в вики. С другой, я бы его так и не прочитал. Видео контент мне заходит легче.
В целом просто хорошая лекция про хеширование. Можно смотреть в отрыве от курса про бд! Многое узнал (потому что не особо интересовался)
Static и Extendible Hashing, Linear probe, Cuckoo (Я вообще не знал про это), Chained, Linear Hashing.
Быстро, но понятно про Bloom Filter.
После лекции стало понятно, что значит "probe miss" в Спарке у HashAggregate.
+ на фоне разворачивается побочная романтическая история
hur.st/bloomfilter - Наглядная ссылка про Bloom Filter
DE++ от Валентина
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
F2023 #06 - Database Memory & Disk I/O Management (CMU Intro to Database Systems)
Andy Pavlo (https://www.cs.cmu.edu/~pavlo/)
Slides: https://15445.courses.cs.cmu.edu/fall2023/slides/06-bufferpool.pdf
Notes: https://15445.courses.cs.cmu.edu/fall2023/notes/06-bufferpool.pdf
15-445/645 Intro to Database Systems (Fall 2023)
Carnegie Mellon…
Slides: https://15445.courses.cs.cmu.edu/fall2023/slides/06-bufferpool.pdf
Notes: https://15445.courses.cs.cmu.edu/fall2023/notes/06-bufferpool.pdf
15-445/645 Intro to Database Systems (Fall 2023)
Carnegie Mellon…
👍5❤1❤🔥1
Крутейший выпуск подлодки про NeRF’ы и VR
Сначала про гостя – Андрей Володин, ускорял нейронки в Prizma потом работал над “Нет Монет”. Рассказывает про работу и сложные штуки живо, интересно и очень увлечённо. Сложно не заразится хоть частью такого настроя.
Почти 3 часа — это многовато. Так что, если будут сомнения слушать или нет - советую попробовать первые 30 минут. Дальше не оторвётесь.(Весь кринж навален в первые 3 минуты, аккуратнее)
Основная тема – это VR. В целом про индустрию, технические сложности, графику и проблемы в индустрии. Подойдёт всем и тот, кто уже интересуется (как я) и тот, кто вообще ничего не знает про VR, но хочет узнать.
Вторая тема – чтобы было понятно, что Андрей делает сейчас пришлось рассказать про целый набор сложных, но интересных вещей: нейронки NeRF, гауссовские сплаты, проблемы нативной разработки для VR и оптимизации.
В целом от выпуска ощущение крышесносное. Как будто их стартап сейчас историю творит. Надеюсь у них получится.
Все ссылки тоже советую тыкнуть. Везде всё наглядно с картинками. Я такое люблю.
И в комменты скину видео с демо, про которое говорят в подкасте.
Картинки и описание что такое NeRF’ы
Сайт стартапа Андрея с примерами
Их конкуренты
DE++ от Валентина
Сначала про гостя – Андрей Володин, ускорял нейронки в Prizma потом работал над “Нет Монет”. Рассказывает про работу и сложные штуки живо, интересно и очень увлечённо. Сложно не заразится хоть частью такого настроя.
Почти 3 часа — это многовато. Так что, если будут сомнения слушать или нет - советую попробовать первые 30 минут. Дальше не оторвётесь.
Основная тема – это VR. В целом про индустрию, технические сложности, графику и проблемы в индустрии. Подойдёт всем и тот, кто уже интересуется (как я) и тот, кто вообще ничего не знает про VR, но хочет узнать.
Вторая тема – чтобы было понятно, что Андрей делает сейчас пришлось рассказать про целый набор сложных, но интересных вещей: нейронки NeRF, гауссовские сплаты, проблемы нативной разработки для VR и оптимизации.
В целом от выпуска ощущение крышесносное. Как будто их стартап сейчас историю творит. Надеюсь у них получится.
Все ссылки тоже советую тыкнуть. Везде всё наглядно с картинками. Я такое люблю.
И в комменты скину видео с демо, про которое говорят в подкасте.
Картинки и описание что такое NeRF’ы
Сайт стартапа Андрея с примерами
Их конкуренты
DE++ от Валентина
podlodka.io
Podlodka #354 – Разработка для VR и NeRF
У нас уже был выпуск про VR, потому мы обсудили, что произошло с индустрией за прошедшие годы. В центральной части выпуска подняли тему NeRF – технологии, которая позволяет делать фотореалистичные снимки сцен, после чего по ней можно двигаться в VR шлеме…
❤🔥5
Вот настолько я зарядился этим разговором
Решил дать второй шанс VR'у
И второй шанс себе, потому что я уже покупал Quest 2 в 2021, чтобы работать в VR и что-то делать для него🤡 .
В итоге все идеи так и остались идеями, из сделанного только N песен на эксперте в Beat Saber, а я тоже попал в группу тех, у кого шлем в основном собирает пыль. Потом отдал его брату и там его вроде используют. Хоть так.
Пока планы такие:
1) Попробовать демки Gracia
2) Настроить среду и ПоПрОгРаМмИрОвАтЬ в очках
3) Снова расчехлить курс по Unity для VR и сделать хоть что-то
Решил дать второй шанс VR'у
И второй шанс себе, потому что я уже покупал Quest 2 в 2021, чтобы работать в VR и что-то делать для него
В итоге все идеи так и остались идеями, из сделанного только N песен на эксперте в Beat Saber, а я тоже попал в группу тех, у кого шлем в основном собирает пыль. Потом отдал его брату и там его вроде используют. Хоть так.
Пока планы такие:
1) Попробовать демки Gracia
2) Настроить среду и ПоПрОгРаМмИрОвАтЬ в очках
3) Снова расчехлить курс по Unity для VR и сделать хоть что-то
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4👍2
У меня на работе сейчас и последние месяцы мало интересных DE задач, поэтому начал смотреть по сторонам и делать что-то смежное для роста в T-shape, если говорить по-модному.
Так что вот доклад в тему про то, как утроено рабочее окружение у команды Hexlet’a.
Если коротко, то:
1) Вы со своей машины только подключаетесь по ssh на сервер и вообще всё делаете там
2) Для изоляции все проекты в docker-compose или Vagrant
3) Для настройки машин Ansible
4) Makefile для унификации команд для проекта
5) asdf для разных версий языков
И другое. Но это самое полезное на мой взгляд.
Первая моя реакция была: "жесть как круто, хочу так же!". Но понятно, что это не полностью применимо под DE разработку.
Я вот уже научился локально поднимать Airflow в контейнерах и тестировать часть логики дагов локально. Это гораздо быстрее, чем ждать пока ci-cd всё соберёт. (Да, иногда приходилось прогонять пайплайн, чтобы потом увидеть ошибку синтаксиса, я тоже от этого не в восторге)
Ещё Makefile точно возьму, но он в последнюю очередь должен идти
И asdf для питона разных версий попробую
Там всего 30 минут без вопросов. Интересно даже просто узнать, как другие люди работают.
DE++ от Валентина
Так что вот доклад в тему про то, как утроено рабочее окружение у команды Hexlet’a.
Если коротко, то:
1) Вы со своей машины только подключаетесь по ssh на сервер и вообще всё делаете там
2) Для изоляции все проекты в docker-compose или Vagrant
3) Для настройки машин Ansible
4) Makefile для унификации команд для проекта
5) asdf для разных версий языков
И другое. Но это самое полезное на мой взгляд.
Первая моя реакция была: "жесть как круто, хочу так же!". Но понятно, что это не полностью применимо под DE разработку.
Я вот уже научился локально поднимать Airflow в контейнерах и тестировать часть логики дагов локально. Это гораздо быстрее, чем ждать пока ci-cd всё соберёт. (Да, иногда приходилось прогонять пайплайн, чтобы потом увидеть ошибку синтаксиса, я тоже от этого не в восторге)
Ещё Makefile точно возьму, но он в последнюю очередь должен идти
И asdf для питона разных версий попробую
Там всего 30 минут без вопросов. Интересно даже просто узнать, как другие люди работают.
DE++ от Валентина
YouTube
Как мы ушли от локальной разработки в облака и что выиграли / Кирилл Мокевнин (Hexlet)
Приглашаем на TechLead Conf X 2025, которая пройдет 5 июня в Москве.
Программа, подробности и билеты по ссылке https://bit.ly/3PZN1hk
---------
TechLead Conf 2021
Конференция, полностью посвященная инженерным процессам и практикам
Тезисы и презентация:…
Программа, подробности и билеты по ссылке https://bit.ly/3PZN1hk
---------
TechLead Conf 2021
Конференция, полностью посвященная инженерным процессам и практикам
Тезисы и презентация:…
🔥4
Полуреклама, но хорошая, правда
Один из моих первых подписчиков, тоже решил вести канал в телеге про DE.
У него контент для DE уровня Junior-Middle с упором на реальные задачи. Но мне тоже полезно, например, про моделирование данных, я сейчас на работе этим вообще не занимаюсь.
Или один из последних постов он написал в “моём стиле” обзор на доклад про вставку в ClickHouse.
И посты выходят регулярно. В отличии от некоторых, кхе-кхе
С начала января там уже нормальное количество контента накопилось.
Вообще я очень люблю нишевые каналы в телеге, так что если вы ведете или читаете что-то такое (необязательно про DE и IT), то напишите в комментариях! (Что-то типа на 2-500 подписчиков)
Но только после того, как посмотрите канал Алексея, хорошо?
rzv_de от Алексея
Один из моих первых подписчиков, тоже решил вести канал в телеге про DE.
У него контент для DE уровня Junior-Middle с упором на реальные задачи. Но мне тоже полезно, например, про моделирование данных, я сейчас на работе этим вообще не занимаюсь.
Или один из последних постов он написал в “моём стиле” обзор на доклад про вставку в ClickHouse.
И посты выходят регулярно. В отличии от некоторых, кхе-кхе
С начала января там уже нормальное количество контента накопилось.
Вообще я очень люблю нишевые каналы в телеге, так что если вы ведете или читаете что-то такое (необязательно про DE и IT), то напишите в комментариях! (Что-то типа на 2-500 подписчиков)
Но только после того, как посмотрите канал Алексея, хорошо?
rzv_de от Алексея
Telegram
rzv Data Engineering
#вперемешку
Data vault 1 и 2 -- методологии моделирования данных для DWH 1/9
Заваривайте чай, серия постов будет длинной :)
Прежде всего -- определимся с ответами на два вопроса. Зачем нужно моделирование данных и почему Data vault стал популярным решением…
Data vault 1 и 2 -- методологии моделирования данных для DWH 1/9
Заваривайте чай, серия постов будет длинной :)
Прежде всего -- определимся с ответами на два вопроса. Зачем нужно моделирование данных и почему Data vault стал популярным решением…
❤3🔥1
Был в месячном мега отпуске в Австралии (и чуть-чуть в Сингапуре) И сходил на 2 митапа в Мельбурне
Так что в этом посте будут очень субъективные наблюдения и мысли, основанные на поверхностных наблюдениях.
Первый про MLOps, второй про dbt. Ещё хотел сходить в офис Microsoft на мастер класс с ChatGPT, но не получилось. Обе темы меня мало касаются, но я не шёл ради докладов.
Я точно хотел:
1) Потренировать английский
2) Побыть на митапе не в РФ
3) Побольше узнать про работу и задачи в стране
Выводы, основанные на такой внушительной выборке:
1) Я могу потянуть разговор на англе
2) Тут митапы это именно про встретиться и поболтать. Доклады – это второстепенное, что-то не сложное на 20-30 минут.
Раньше я выбирал идти или нет только по темам.
Побочный продукт – ушёл мой личный страх про то, что у меня нет опыта в облаках и каких-то инструментов, которые популярны там. Может это потом вылезет, но я послушал какие задачи они решают и сейчас перестал парится на этот счёт.
В целом:
За головокружительной карьерой сюда точно ехать не стоит. А вот если хочется уехать подальше от всего мира, в 5 часов закрывать ноут и идти заниматься вашим любимым водным спортом или хайкать, то Австралия – это ваш бро!
Стиль жизни напоминает Американский(я там не был, но смотрел миллион видосов и сами американцы так сказали) , но(!) без американских зарплат. А зачем тогда?
DE++ от Валентина
Так что в этом посте будут очень субъективные наблюдения и мысли, основанные на поверхностных наблюдениях.
Первый про MLOps, второй про dbt. Ещё хотел сходить в офис Microsoft на мастер класс с ChatGPT, но не получилось. Обе темы меня мало касаются, но я не шёл ради докладов.
Я точно хотел:
1) Потренировать английский
2) Побыть на митапе не в РФ
3) Побольше узнать про работу и задачи в стране
Выводы, основанные на такой внушительной выборке:
1) Я могу потянуть разговор на англе
2) Тут митапы это именно про встретиться и поболтать. Доклады – это второстепенное, что-то не сложное на 20-30 минут.
Раньше я выбирал идти или нет только по темам.
Побочный продукт – ушёл мой личный страх про то, что у меня нет опыта в облаках и каких-то инструментов, которые популярны там. Может это потом вылезет, но я послушал какие задачи они решают и сейчас перестал парится на этот счёт.
В целом:
За головокружительной карьерой сюда точно ехать не стоит. А вот если хочется уехать подальше от всего мира, в 5 часов закрывать ноут и идти заниматься вашим любимым водным спортом или хайкать, то Австралия – это ваш бро!
Стиль жизни напоминает Американский
DE++ от Валентина
👍8🔥3
Возвращаемся к формату докладов
Вообще я хотел что-то глянуть, чтобы понять, что такое Feature Store и зачем оно нужно, когда надо, когда нет и т.д.
В целом, я, конечно, понял, что это такое. Но фоном, потому что доклад не про это.
Он больше про проектирование архитектуры серверной highload штуковины (в нашем случае это FC).
Ответы на вопросы: что мониторить, какие лимиты ставить, точки отказа.
Их история построения своего FC началась в 2015, когда ещё никаких нормальных готовых решений не было. Надо ли сейчас такое самому делать ответа не было.
Я пока не готовился, но выглядит как хороший доклад на подготовку к System Design интервью.
Узнал, что существует Samza (типа Flink от LinkedIn’a)
Более обзорный доклад про FC, чтобы получить на вопросы в начале, надеюсь ещё найду и посмотрю🤔
DE++ от Валентина
Вообще я хотел что-то глянуть, чтобы понять, что такое Feature Store и зачем оно нужно, когда надо, когда нет и т.д.
В целом, я, конечно, понял, что это такое. Но фоном, потому что доклад не про это.
Он больше про проектирование архитектуры серверной highload штуковины (в нашем случае это FC).
Ответы на вопросы: что мониторить, какие лимиты ставить, точки отказа.
Их история построения своего FC началась в 2015, когда ещё никаких нормальных готовых решений не было. Надо ли сейчас такое самому делать ответа не было.
Я пока не готовился, но выглядит как хороший доклад на подготовку к System Design интервью.
Узнал, что существует Samza (типа Flink от LinkedIn’a)
Более обзорный доклад про FC, чтобы получить на вопросы в начале, надеюсь ещё найду и посмотрю
DE++ от Валентина
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Андрей Кузнецов — Распределенный высоконагруженный feature store ОК
Подробнее о конференции SmartData: https://jrg.su/aTWU2K
— —
Основная часть доклада будет посвящена архитектуре feature store в ОК и выученным урокам по эксплуатации многокластерного feature store в высоконагруженном продакшене. Рассмотрим feature store как…
— —
Основная часть доклада будет посвящена архитектуре feature store в ОК и выученным урокам по эксплуатации многокластерного feature store в высоконагруженном продакшене. Рассмотрим feature store как…
Spark Native UDF
На прошлых выходных и чуть этих первый раз написал нативные UDF для спарка.
С одной стороны, это легче чем я думал. С другой, это просто огромное поле для экспериментов. Но обо всём по порядку.
Все кто используют спарк сразу узнают про UDF, а потом, что их желательно не использовать, потому что:
1) Catalyst не знает, что в этой UDF происходит и не может это оптимизировать. Больше всего нас интересует Predicate pushdown, но вероятно, есть и ещё какие-то
2) Кодогенерация не работает и добавляет лишние проверки на null и try-catch конструкции
3) Если udf работает со строками, то происходит конвертация из String UTF-8 в UTF-16 и обратно. (Спарк работает c utf-8, а Java с utf16)
А что можно с этим делать?
На самом деле не очень много:
1) Переписать на встроенные функции или на
2) Забить
3) (Вроде как у pySpark тоже есть способы ускорить, но я пока в это не погружался + сомневаюсь, что это будет быстрее последнего варианта)
4) Написать свою "нативную" функцию и встроить внутрь Spark.
Т.е. по сути расширить язык Spark SQL своим новым выражением(Expression), чтобы Catalyst начал понимать что это такое. И подставлять Java код, куда сможет (если вы написали)
Как раз последним я и занимался. Сразу скажу, что пока я миллионы денег на кластерных ресурсах не сэкономил.
Но дико кайфанул пока это делал и экспериментировал
Я написал пару тестовых функций и 1 однострочник из реального кода на проде и просто несколько вечеров сидел, смотрел
1) как java код генерится при nullSafeCodeGen и defineCodeGen,
2) насколько быстрее это работает
3) что меняется в разных версиях спарка
4) работает ли Predicate Pushdown если не писать defineCodeGen, а только eval (да, если нужен только PP то можно не страдать с джавой)
и т.д
Планы:
1) Ускорить один расчёт, который кушоет от 600-800 cores и работает 4-5 часов. (в нём есть 15 udf, но на нативные надо переписать только 2-3)
2) Научится +- честно мерить скорость расчётов в спарке
3) Взять какую-то сложную udf на строк 10-20 на питоне и ускорять всеми способами, постепенно дойти до нативной и померить каждый шаг (очень долгая история, но составит полную картину)
P.S.Не забывайте ставить точки с запятой! В Java они всё ещё нужны!!! 💩
Источники:
Единственное видео про это от DB неплохое
Единственная статья на русском по мотивам видео хорошая)
Статья от DataBricks зачем они делают CodeGen в Spark
Простенькая статья с примером UUID и реализацией без кодогена, а через eval
Тоже статья с кодом посложнее и примером BinaryExpression
Статья где показано как правильно регистрировать функцию, чтобы можно было использовать в sql
Примеры функций (порт функций из Postgres и Teradata)
Сорцы спарка - как обычно лучший источник примеров
DE++ от Валентина
На прошлых выходных и чуть этих первый раз написал нативные UDF для спарка.
С одной стороны, это легче чем я думал. С другой, это просто огромное поле для экспериментов. Но обо всём по порядку.
Все кто используют спарк сразу узнают про UDF, а потом, что их желательно не использовать, потому что:
1) Catalyst не знает, что в этой UDF происходит и не может это оптимизировать. Больше всего нас интересует Predicate pushdown, но вероятно, есть и ещё какие-то
2) Кодогенерация не работает и добавляет лишние проверки на null и try-catch конструкции
3) Если udf работает со строками, то происходит конвертация из String UTF-8 в UTF-16 и обратно. (Спарк работает c utf-8, а Java с utf16)
А что можно с этим делать?
На самом деле не очень много:
1) Переписать на встроенные функции или на
2) Забить
3) (Вроде как у pySpark тоже есть способы ускорить, но я пока в это не погружался + сомневаюсь, что это будет быстрее последнего варианта)
4) Написать свою "нативную" функцию и встроить внутрь Spark.
Т.е. по сути расширить язык Spark SQL своим новым выражением(Expression), чтобы Catalyst начал понимать что это такое. И подставлять Java код, куда сможет (если вы написали)
Как раз последним я и занимался. Сразу скажу, что пока я миллионы денег на кластерных ресурсах не сэкономил.
Но дико кайфанул пока это делал и экспериментировал
Я написал пару тестовых функций и 1 однострочник из реального кода на проде и просто несколько вечеров сидел, смотрел
1) как java код генерится при nullSafeCodeGen и defineCodeGen,
2) насколько быстрее это работает
3) что меняется в разных версиях спарка
4) работает ли Predicate Pushdown если не писать defineCodeGen, а только eval (да, если нужен только PP то можно не страдать с джавой)
и т.д
Планы:
1) Ускорить один расчёт, который кушоет от 600-800 cores и работает 4-5 часов. (в нём есть 15 udf, но на нативные надо переписать только 2-3)
2) Научится +- честно мерить скорость расчётов в спарке
3) Взять какую-то сложную udf на строк 10-20 на питоне и ускорять всеми способами, постепенно дойти до нативной и померить каждый шаг (очень долгая история, но составит полную картину)
P.S.
Источники:
Единственное видео про это от DB неплохое
Единственная статья на русском по мотивам видео хорошая)
Статья от DataBricks зачем они делают CodeGen в Spark
Простенькая статья с примером UUID и реализацией без кодогена, а через eval
Тоже статья с кодом посложнее и примером BinaryExpression
Статья где показано как правильно регистрировать функцию, чтобы можно было использовать в sql
Примеры функций (порт функций из Postgres и Teradata)
Сорцы спарка - как обычно лучший источник примеров
DE++ от Валентина
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Optimizing Apache Spark UDFs
User Defined Functions is an important feature of Spark SQL which helps extend the language by adding custom constructs. UDFs are very useful for extending spark vocabulary but come with significant performance overhead. These are black boxes for Spark optimizer…
🔥6❤2