Пост-мит dbt meetup
Только что закончился dbt meetup
Что было:
1️⃣ "Данные под контролем: Great Expectations в деле"
База про что такое data quality, какие критерии качества данных бывают, как добавить тест в GX, какой файлик с результатами получается, как выглядит таблица в UI DataHub (это такой дата каталог, чтобы пользователям было удобно смотреть бизнес-сущности, запущенные проверки и т.д.) Хотелось послушать на х3, скучно, в чате были вопросы круче, мне не понравилось :(
2️⃣ "Так ли удобен dbt, как о нём рассказывают (костыли, ограничения, трудности)"
Про dbt на практике. Как переопределять макросы, добавлять хинты для dbt, как обращаться к системным таблицам, как возвращать значения из макросов, особенности логирования и работы с json, dbt unit testing (либа)
3️⃣ "Современные практики локальной разработки и тестирования в dbt"
Про локальную разработку в dbt, Makefile (для удобного запуска команд), Zero Copy Clone (прод - read-only, запись в dev), dbt unit tests (в dbt core), эфемерные модели, фикстуры (один раз создаются, даже если нужны в нескольких тестах)
4️⃣ "DuckDB на каждый день - меньше рутины, больше аналитики"
Про pandas, DuckDB overview, кейсы использования, как интегрировать с dbt, новые фичи в SQL (group by all, union by name и т.д.)
5️⃣ "Данные на максималках: инкрементальные загрузки и partition replacing"
Про инкрементальные модели в dbt, SCD, WAP-паттерн (Write-Audit-Pattern, сначала записываем, потом проверяем и публикуем), метод замены партиций, продвинутая работа с изменениями в данных. Тут надо еще немного преисполниться
Только что закончился dbt meetup
Что было:
База про что такое data quality, какие критерии качества данных бывают, как добавить тест в GX, какой файлик с результатами получается, как выглядит таблица в UI DataHub (это такой дата каталог, чтобы пользователям было удобно смотреть бизнес-сущности, запущенные проверки и т.д.) Хотелось послушать на х3, скучно, в чате были вопросы круче, мне не понравилось :(
Про dbt на практике. Как переопределять макросы, добавлять хинты для dbt, как обращаться к системным таблицам, как возвращать значения из макросов, особенности логирования и работы с json, dbt unit testing (либа)
Про локальную разработку в dbt, Makefile (для удобного запуска команд), Zero Copy Clone (прод - read-only, запись в dev), dbt unit tests (в dbt core), эфемерные модели, фикстуры (один раз создаются, даже если нужны в нескольких тестах)
Про pandas, DuckDB overview, кейсы использования, как интегрировать с dbt, новые фичи в SQL (group by all, union by name и т.д.)
Про инкрементальные модели в dbt, SCD, WAP-паттерн (Write-Audit-Pattern, сначала записываем, потом проверяем и публикуем), метод замены партиций, продвинутая работа с изменениями в данных. Тут надо еще немного преисполниться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19👍6
Теперь дока - мой верный друг
В последнее время чувствую необходимость пойти в доку и почитать, если нужно что-то найти. Привожу список полезных ссылочек с небольшим описанием:
✨ Spark - движок для распределенных вычислений большого объема данных на нескольких машинках
https://spark.apache.org/docs/latest/configuration.html
🐇 Trino - SQL-движок для запросов к разным видам источников данных
https://trino.io/docs/current/index.html
👩💻 Scala - Java-подобный язык (но не совсем)
https://www.scala-lang.org/api/3.x/scala.html
👩💻 PyArrow - либа для работы с данными
https://arrow.apache.org/docs/python/index.html
🐘 YARN API - API для менеджера ресурсов на кластере
https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html
🍺 brew - менеджер пакетов для мака
https://formulae.brew.sh/formula/
👩💻 Python - ну что тут еще добавить
https://docs.python.org/3/library/
🌺 Airflow - оркестратор потоков обработки
https://airflow.apache.org/docs/apache-airflow/stable/index.html
⛩ Jinja - шаблоны на питоне для динамической генерации
https://jinja.palletsprojects.com/en/stable/
👩💻 Docker - платформа для контейнеризации приложений
https://docs.docker.com/reference/
👨🏫 Bamboo - CI/CD
https://confluence.atlassian.com/bamboo/bamboo-documentation-289276551.html
🗻 Iceberg - табличный формат хранения данных с транзакциями, возможностью иметь несколько версий таблицы и т.д.
https://iceberg.apache.org/docs/latest/
🟢 Apache ORC - колоночный формат хранения данных
https://orc.apache.org/docs/index.html
В последнее время чувствую необходимость пойти в доку и почитать, если нужно что-то найти. Привожу список полезных ссылочек с небольшим описанием:
https://spark.apache.org/docs/latest/configuration.html
https://trino.io/docs/current/index.html
https://www.scala-lang.org/api/3.x/scala.html
https://arrow.apache.org/docs/python/index.html
https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html
🍺 brew - менеджер пакетов для мака
https://formulae.brew.sh/formula/
https://docs.python.org/3/library/
https://airflow.apache.org/docs/apache-airflow/stable/index.html
⛩ Jinja - шаблоны на питоне для динамической генерации
https://jinja.palletsprojects.com/en/stable/
https://docs.docker.com/reference/
https://confluence.atlassian.com/bamboo/bamboo-documentation-289276551.html
🗻 Iceberg - табличный формат хранения данных с транзакциями, возможностью иметь несколько версий таблицы и т.д.
https://iceberg.apache.org/docs/latest/
https://orc.apache.org/docs/index.html
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30❤6 3👍2
ClickHouse Tips and Features.pdf
600 KB
ClickHouse Tips and Features
Недавно один подписчик спрашивал, остались ли еще какие-нибудь крутые презы по инструментам. Вот откопала презу по кх)
Недавно один подписчик спрашивал, остались ли еще какие-нибудь крутые презы по инструментам. Вот откопала презу по кх)
❤45👍9💅7🤷1
Наткнулась на статью, которую опубликовал лид моего тимлида в прошлом году
https://habr.com/ru/companies/lamoda/articles/810705/
https://habr.com/ru/companies/lamoda/articles/810705/
Хабр
Рулим запуском Spark-приложений в Airflow с помощью самописного оператора
Airflow в Lamoda Tech играет роль оркестратора процессов обработки данных. Ежедневно с его помощью мы запускаем 1 800+ тасок на проде, примерно половина из которых являются Spark-приложениями. Все...
👍8
Ну... почти
дропнула
базу
на проде
Я просто сделала в спарке:
(
df
.write
.format(data_format)
.mode("overwrite")
.save(path)
)
Но в переменной
path
оказался путь не к табличке, а ко всей схеме...В целом, ничего критичного не случилось, но грустно и неприятно. Как говорил классик: "Anything that can go wrong will go wrong". Так что будьте внимательны, дамы и господа
Please open Telegram to view this post
VIEW IN TELEGRAM
👀43🌚8🔥6 6🍾4
Моя теория расписаний
Меня несколько раз спрашивали, как у меня получается делать столько дел и все успевать?
🎹 Я думаю, эта история заложилась как минимум, когда я параллельно училась в лицее+муз колледже. Я выписывала все доступные слоты по каждому предмету в колледже и искала оптимальное время
Потом ходила к преподам договариваться, чтобы разрешили ходить с другими группами. Если слотов не было, договаривалась прийти на экз со всеми конспектами. У меня как будто американское образование, потому что я всегда ходила с разными людьми😂
На индивидуальные занятия ходила даже домой, потому что по времени было больше никак. Я даже когда-то охарактеризовала себя так: «Каждый семестр я немножко колдунья»
👟 Часто я бегала туда-обратно по несколько раз в день (типо колледж-универ-колледж-универ)
Было особенно забавно, когда у меня совпали экзы в универе и выпускные гос экзы в колледже. С утра я сдавала в одном месте, а после обеда в другом. Бывало, что договаривалась с универом и сдавала с параллельной группой
🕊 На фотке №1 - мое расписание, когда я училась уже в универе+муз колледже. Периодически я была занята с 8 до 20. А еще в идеале нужно было заниматься за фортепиано минимум по 4ч в день. Кроме теор предметов, было 5 индивидуальных с инструментом два раза в неделю, к которым просто необходимо было готовиться🫠
🕊 На фотке №2 - забавная смесь, где на левой страничке я готовилась к угадайке по опере, а на правой делала домашку по линалу
🕊 На фотке №3 - пример моего текущего расписания. Мне всегда куда-то надо и в несколько мест одновременно 😅
🖍 Решила заодно перечитать свой «Дневник размышлений», который пополняю мыслями несколько раз в год. Нашла интересные аффирмации:
Меня несколько раз спрашивали, как у меня получается делать столько дел и все успевать?
Потом ходила к преподам договариваться, чтобы разрешили ходить с другими группами. Если слотов не было, договаривалась прийти на экз со всеми конспектами. У меня как будто американское образование, потому что я всегда ходила с разными людьми😂
На индивидуальные занятия ходила даже домой, потому что по времени было больше никак. Я даже когда-то охарактеризовала себя так: «Каждый семестр я немножко колдунья»
Было особенно забавно, когда у меня совпали экзы в универе и выпускные гос экзы в колледже. С утра я сдавала в одном месте, а после обеда в другом. Бывало, что договаривалась с универом и сдавала с параллельной группой
Сейчас время ускользает сквозь пальцы, а все мои идеи так ими и остаются. А я растрачиваю свое невозвратимое никогда благо на ерунду, когда нужно начать действовать!
Я могу. Я хочу. Я делаю
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27 14❤10🔥4
Новый релиз Airflow!
https://github.com/apache/airflow/releases/tag/3.0.0
Уже есть видос с фичами, этот чел мне постоянно в линкедине попадается:
https://youtu.be/PMO5LPc112E?si=GwiHa9KFte7uVeNN
https://github.com/apache/airflow/releases/tag/3.0.0
Уже есть видос с фичами, этот чел мне постоянно в линкедине попадается:
https://youtu.be/PMO5LPc112E?si=GwiHa9KFte7uVeNN
GitHub
Release Airflow 3.0.0 · apache/airflow
📣 We are proud to announce the General Availability of Apache Airflow® 3.0, the most significant release in the project’s history.
Airflow 3.0 builds on the foundation of Airflow 2 and introduces a...
Airflow 3.0 builds on the foundation of Airflow 2 and introduces a...
❤10 6👍4🔥1
Архитектурки
Вчера прошел "Lakehouse Meetup", где было 2 выступления и панельная дискуссия на тему проблем, технологий, опыта разных компаний: Т-Банк, Лемана Тех, Азбука Вкуса, S7 Airlines, Querify Labs, Positive Technologies (как ни странно)
Картинка №1 - to be, до которой дошли в Лемана Тех (почти)
Картинка №2 - как сейчас в Азбуке Вкуса
Успела заглянуть всего на полчаса, чтобы посмотреть офис, встретиться со знакомыми людьми и съесть пару вкусняшек🙂 Остальное досмотрела в записи, что можете сделать и вы:
YouTube
VK
#system_design
Вчера прошел "Lakehouse Meetup", где было 2 выступления и панельная дискуссия на тему проблем, технологий, опыта разных компаний: Т-Банк, Лемана Тех, Азбука Вкуса, S7 Airlines, Querify Labs, Positive Technologies (как ни странно)
Картинка №1 - to be, до которой дошли в Лемана Тех (почти)
Картинка №2 - как сейчас в Азбуке Вкуса
Успела заглянуть всего на полчаса, чтобы посмотреть офис, встретиться со знакомыми людьми и съесть пару вкусняшек
YouTube
VK
#system_design
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Когда тимлид смотрит твои сторис
😁52🔥13🤔3👍1
CustDev
В моей голове не укладывалось, что это такое, пока я не попробовала на себе. Сначала я не хотела идти, но когда позвали персонально, то почему бы и не пойти на что-то новое)
Кастдев - это по сути встреча, где вы выступаете пользователем продуктов, а другая сторона - разработчиком собственного продукта. Меня поспрашивали про:
🤩 мои боли
🤩 что мне неудобно в функционале
🤩 что мне хотелось бы видеть
🤩 как часто я пользуюсь тем или иным приложением
🤩 какие задачи я решаю с их использованием
🤩 что мне хотелось бы автоматизировать
🤩 трудности, если бы я была новым коллегой
🤩 и т.д.
Возможно, это был бонус, но мне даже показали UI и что там уже можно поделать
Такое проводится с большим количеством людей, чтобы собрать мнения и потом создать ультра-мега-супер-классный продукт, который понравится всем (в идеале)
Встреча была интересной, я постаралась выжать из себя идеи, но как будто это не мой формат😅 К сожалению, меня ничего не бесит и не раздражает в этой жизни))
Следующий шаг - осознать, что каждый день на работе делает DevRel…
В моей голове не укладывалось, что это такое, пока я не попробовала на себе. Сначала я не хотела идти, но когда позвали персонально, то почему бы и не пойти на что-то новое)
Кастдев - это по сути встреча, где вы выступаете пользователем продуктов, а другая сторона - разработчиком собственного продукта. Меня поспрашивали про:
Возможно, это был бонус, но мне даже показали UI и что там уже можно поделать
Такое проводится с большим количеством людей, чтобы собрать мнения и потом создать ультра-мега-супер-классный продукт, который понравится всем (в идеале)
Встреча была интересной, я постаралась выжать из себя идеи, но как будто это не мой формат
Следующий шаг - осознать, что каждый день на работе делает DevRel…
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14 9❤3💅2
Committers in Spark
В спарке есть такая штука, как коммиттеры. Они нужны, чтобы пользователи видели только успешные финальные результаты. Их несколько:
✨ File Output Committer
v1
Сначала все файлы пишутся во временные папки в attempt/, потом перекладываются (по сути rename) в task/ и в самом конце в корень вашей папки. Тут упор на надежность: если что-то упало, то оно перезапустится и не попадет в конечную папку, пока не отработает
v2
Здесь файлы пишутся в attempt/, а потом сразу перемещаются в корень вашей папки. Тут упор на производительность: нет дополнительного шага, но если что-то пойдет не так, то останутся куски файлов
✨ S3A Committers
Для работы с s3 есть magic и staging. Предыдущие не подходят, т.к. переименование реализовано как копирование и удаление. И если файлов много, то это очень долгая операция
magic
Файлы пишутся сразу в корень, но облако должно быть консистентным. Появился в конце 2021
staging
С ним я не игралась, но суть в том, что сами файлы пишутся в стейджинг на hdfs (отсюда и название), а потом грузятся в s3
_SUCCESS
Возможно, вы когда-нибудь заглядывали в файл _SUCCESS. Если писать алгоритмами v1/v2, то он будет пустым. А вот пример с magic:
В спарке есть такая штука, как коммиттеры. Они нужны, чтобы пользователи видели только успешные финальные результаты. Их несколько:
v1
"spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version" = 1
Сначала все файлы пишутся во временные папки в attempt/, потом перекладываются (по сути rename) в task/ и в самом конце в корень вашей папки. Тут упор на надежность: если что-то упало, то оно перезапустится и не попадет в конечную папку, пока не отработает
v2
"spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version" = 2
Здесь файлы пишутся в attempt/, а потом сразу перемещаются в корень вашей папки. Тут упор на производительность: нет дополнительного шага, но если что-то пойдет не так, то останутся куски файлов
Для работы с s3 есть magic и staging. Предыдущие не подходят, т.к. переименование реализовано как копирование и удаление. И если файлов много, то это очень долгая операция
magic
"spark.hadoop.fs.s3a.committer.name" = "magic"
"spark.hadoop.fs.s3a.committer.magic.enabled" = "true"
Файлы пишутся сразу в корень, но облако должно быть консистентным. Появился в конце 2021
staging
С ним я не игралась, но суть в том, что сами файлы пишутся в стейджинг на hdfs (отсюда и название), а потом грузятся в s3
_SUCCESS
Возможно, вы когда-нибудь заглядывали в файл _SUCCESS. Если писать алгоритмами v1/v2, то он будет пустым. А вот пример с magic:
{
"name" : "org.apache.hadoor.fs.3a.commit. files.SuccessData/1",
"timestamp" : 1744183768995,
"date" : "Wed Apr 09 10:29:28 MSK 2025",
"committer" : "magic",
"description" : "Task committer attempt_202504091019345870801396712503545_6660_m_1000000_0",
"metrics" : {
"stream_write_block_uploads" : 0,
"files_created" : 1,
"stream_closed" : 200,
...
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20 4