Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
354 - Telegram Web
Telegram Web
Пост-мит 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, сначала записываем, потом проверяем и публикуем), метод замены партиций, продвинутая работа с изменениями в данных. Тут надо еще немного преисполниться
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
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3063👍2
ClickHouse Tips and Features.pdf
600 KB
ClickHouse Tips and Features

Недавно один подписчик спрашивал, остались ли еще какие-нибудь крутые презы по инструментам. Вот откопала презу по кх)
45👍9💅7🤷1
‼️ Я дропнула базу на проде ‼️

Ну... почти

дропнула ➡️ перезаписала
базу ➡️ схему
на проде ➡️ на деве

Я просто сделала в спарке:

(
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🔥66🍾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
👍271410🔥4
Сейчас конфа от Arenadata

https://arenaday.io/live/
7👍5
Архитектурки

Вчера прошел "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…
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1493💅2
Как вам история коммитов?
😁379🔥6💅5🤷3🌚1
Committers in Spark

В спарке есть такая штука, как коммиттеры. Они нужны, чтобы пользователи видели только успешные финальные результаты. Их несколько:

File Output Committer

v1

"spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version" = 1


Сначала все файлы пишутся во временные папки в attempt/, потом перекладываются (по сути rename) в task/ и в самом конце в корень вашей папки. Тут упор на надежность: если что-то упало, то оно перезапустится и не попадет в конечную папку, пока не отработает

v2

"spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version" = 2


Здесь файлы пишутся в attempt/, а потом сразу перемещаются в корень вашей папки. Тут упор на производительность: нет дополнительного шага, но если что-то пойдет не так, то останутся куски файлов

S3A Committers

Для работы с 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
🔥204
2025/10/16 15:11:38
Back to Top
HTML Embed Code: