Моя коллекция наклеек
Пока добавляла новую порцию наклеек, решила еще раз посмотреть на собранную коллекцию
И вот оно мне нужно вообще?
Пока добавляла новую порцию наклеек, решила еще раз посмотреть на собранную коллекцию
И вот оно мне нужно вообще?
👍18😁7❤5
Сейчас конфа про выгорание!
Увидела фотку в сторис одногруппницы - оказывается, сегодня в Питере проходит конфа про выгорание
Программа тут
Трансляция здесь
Увидела фотку в сторис одногруппницы - оказывается, сегодня в Питере проходит конфа про выгорание
Программа тут
Трансляция здесь
dayoff.selectel.ru
Selectel Day Off 2025
IT-фестиваль против выгорания
Вы наверняка слышали про такую команду в гите, но никогда не использовали. Она символизирует то, как вы с дерева аккуратненько срываете вишенки одну за одной
В чем суть и зачем она нужна?
Допустим, есть ветка dev. У вас появилась новая задача. Вы создаете feature/DE-111 и пушите свои изменения
Потом вы хотите потестить определенную функциональность на деве, но в фича-ветке уже намешано много всего. А вам нужны всего лишь 1-2 коммита
Что делать?
Сначала из своей ветки достаем хэши коммитов. Потом идем в нужную ветку и вставляем их туда
git checkout feature/DE-111
git log --oneline -10 # последние 10 коммитов
git checkout dev
git cherry-pick commit1-hash commit2-hash
git push
Теперь в деве такая история коммитов:
Но если теперь вы сделаете merge ветки, то каждый коммит задублируется:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17 7🤷4👍2🔥1
Проблема мелких файлов на практике
Я игралась с iceberg-таблицами, и у меня странно долго работали запросы. Исходные данные: 2,8 млрд строк и 111гб. Я поресерчила, что запросы сильно тормозят на этапе чтения. Пошла смотреть, как лежат данные, и увидела в каждой партиции по 100 файлов размером 1кб🥺
1825 партиций, 182400 файлов - представляете, сколько накладных расходов открыть каждый файлик?
В чем особенность айсберга - вы не можете просто взять и переложить/пересохранить данные. Потому что в мете лежат ссылочки на файлики с данными. У вас просто все поломается😒 Для компакта есть процедура рерайта:
Проверено: на драйвере должно быть достаточно памяти, чтобы выполнить эту операцию. Иначе файлики создадутся, но мета не обновится. Это значит, что ничего не поменялось, вы просто теперь храните в 2 раза больше данных, которые придется удалять ручками
После процедуры стало 6283 актуальных файликов - теперь все лежит как надо👍
На картинке - запрос
Что получилось:
- файлы уменьшились в 30 раз
- таски в 6,7 раз
- время в 1,8 раз
Я игралась с iceberg-таблицами, и у меня странно долго работали запросы. Исходные данные: 2,8 млрд строк и 111гб. Я поресерчила, что запросы сильно тормозят на этапе чтения. Пошла смотреть, как лежат данные, и увидела в каждой партиции по 100 файлов размером 1кб
hdfs dfs -count /my_table
# 1825 182400
1825 партиций, 182400 файлов - представляете, сколько накладных расходов открыть каждый файлик?
В чем особенность айсберга - вы не можете просто взять и переложить/пересохранить данные. Потому что в мете лежат ссылочки на файлики с данными. У вас просто все поломается
spark.sql("""CALL system.rewrite_data_files(
table => 'my_db.my_table',
options => map('target-file-size-bytes', '134217728') --128 мб
)""")
Проверено: на драйвере должно быть достаточно памяти, чтобы выполнить эту операцию. Иначе файлики создадутся, но мета не обновится. Это значит, что ничего не поменялось, вы просто теперь храните в 2 раза больше данных, которые придется удалять ручками
После процедуры стало 6283 актуальных файликов - теперь все лежит как надо
На картинке - запрос
spark.table().cache().count()
, который до компакта проходился по 5730 партициям, а теперь всего 856Что получилось:
- файлы уменьшились в 30 раз
- таски в 6,7 раз
- время в 1,8 раз
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥38👍11
3. Управление ожиданиями руководства и команды
Продолжаю рассказывать про курс команды
Второй модуль - тут
Описание программы - тут
Что рассмотрели:
⏺ типология по Адизесу (PAEI)
⏺ этапы развития компании
⏺ корпоративные культуры
⏺ психологическая безопасность в команде
⏺ командная вовлеченность
⏺ матрица прозрачности и доверия
⏺ пороки команды
Лектор тоже классный, 5ч просто незаметно пролетают
Майндсет сотрудника: я сделаю сам
Майндсет руководителя: делегирование = инвестирование, потом будет больше времени для стратегических задач, развития команды и т.д.
Идеальный найм = Task Fit + Team Fit + Culture Fit
А на собесе на менеджера важно попросить описать корп культуру, потому что руководитель ее транслирует
🍰 PAEI
По этой модели идеальный руководитель = постоянные результаты (Production) + совершенствование процессов (Administration) + креативный подход (Entrepreneurship) + работа с командой (Integration)
Он умеет во все функции, но 1-2 выражены наиболее ярко. Если у вас не хватает, например, креативности или не хочется следовать всем правилам - в команде должен быть генератор идей или человек, которому нравится выстраивать процессы. Если таких нет - нужно развить
🐸 Маркеры для собственного проявления
Кого наказывают, кого поощряют?
Кого продвигают, кого нет?
На что выделяются бюджеты?
🐸 Психологическая безопасность
Есть 7 вопросов для определения ок/не ок:
🐻 Командная вовлеченность
Чтобы группа людей была реально командой, нужна общая цель, коллаборации внутри команды, ME -> WE, коллеги -> тиммейты, свои ритуалы, артефакты, табу, язык
Не надо бояться конфликтов, в них появляется решение проблемы и энергия на это решение. При работе в группе вкинули, что можно даже попробовать самому подрывать команду из проблем на 1-1, чтобы быстрее выводить команду на другую стадию развития. Но это может не сработать. Не сломать то, что уже есть
Прикольная цитата
Тест на PAEI можно пройти тут
Продолжаю рассказывать про курс команды
Второй модуль - тут
Описание программы - тут
Что рассмотрели:
Лектор тоже классный, 5ч просто незаметно пролетают
Майндсет сотрудника: я сделаю сам
Майндсет руководителя: делегирование = инвестирование, потом будет больше времени для стратегических задач, развития команды и т.д.
Идеальный найм = Task Fit + Team Fit + Culture Fit
А на собесе на менеджера важно попросить описать корп культуру, потому что руководитель ее транслирует
По этой модели идеальный руководитель = постоянные результаты (Production) + совершенствование процессов (Administration) + креативный подход (Entrepreneurship) + работа с командой (Integration)
Он умеет во все функции, но 1-2 выражены наиболее ярко. Если у вас не хватает, например, креативности или не хочется следовать всем правилам - в команде должен быть генератор идей или человек, которому нравится выстраивать процессы. Если таких нет - нужно развить
Кого наказывают, кого поощряют?
Кого продвигают, кого нет?
На что выделяются бюджеты?
Есть 7 вопросов для определения ок/не ок:
1. If you make a mistake on your team, is it held against you?
2. Are you able to bring up problems and tough issues?
3. Do people on the team sometimes reject others for being different?
4. Is it safe to take a risk?
5. Is it difficult to ask other team members for help?
6. Do people on the team deliberately act to undermine your efforts?
7. Are your unique skills and talents valued and utilized?
Чтобы группа людей была реально командой, нужна общая цель, коллаборации внутри команды, ME -> WE, коллеги -> тиммейты, свои ритуалы, артефакты, табу, язык
Не надо бояться конфликтов, в них появляется решение проблемы и энергия на это решение. При работе в группе вкинули, что можно даже попробовать самому подрывать команду из проблем на 1-1, чтобы быстрее выводить команду на другую стадию развития. Но это может не сработать. Не сломать то, что уже есть
Прикольная цитата
Ошибка - оплаченная возможность для развития
Тест на PAEI можно пройти тут
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤9🔥1 1
Media is too big
VIEW IN TELEGRAM
Бесплатный ресурс для англа
Недавно не знала, чем занять очередной вечер, и решила полистать свои чатики с встречками по англу. Там я наткнулась (не реклама) на American Center in Moscow. Я когда-то подписалась на них, но особо не заглядывала, потому что они все организуют онлайн, а мне хотелось прийти вживую
И вот у меня был свободный вечер, у них - просмотр и обсуждение TED Talk на тему прокрастинации, почему бы и да? Мы рассказали про наши дела, посмотрели видос, пообсуждали, прошли тест на прокрастинацию, пообсуждали тест и пошли обсуждать в группах, что мы прокрастинируем и как с этим будем бороться - всего 1,5ч
Оказывается, у них каждый день что-то происходит, и это все бесплатно😋
А видос я нашла в другом чатике, по-моему, очень правдоподобно😁
Недавно не знала, чем занять очередной вечер, и решила полистать свои чатики с встречками по англу. Там я наткнулась (не реклама) на American Center in Moscow. Я когда-то подписалась на них, но особо не заглядывала, потому что они все организуют онлайн, а мне хотелось прийти вживую
И вот у меня был свободный вечер, у них - просмотр и обсуждение TED Talk на тему прокрастинации, почему бы и да? Мы рассказали про наши дела, посмотрели видос, пообсуждали, прошли тест на прокрастинацию, пообсуждали тест и пошли обсуждать в группах, что мы прокрастинируем и как с этим будем бороться - всего 1,5ч
Оказывается, у них каждый день что-то происходит, и это все бесплатно
А видос я нашла в другом чатике, по-моему, очень правдоподобно😁
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍13❤6😁6
Разбираемся в движках клика
Этот день настал, и я наконец-то поняла, что происходит с разными движками в кх🕺
Возьмем такую конфигурацию кластера: 2 шарда по 2 реплики. И для примера 3 движка: MergeTree, ReplicatedMergeTree, Distributed
Подключаемся к 1му хосту, создаем 6 таблиц на кластере. Чтобы результаты не мешали друг другу, под Distributed создаем отдельные свежие чистые таблички:
1) MergeTree
2) ReplicatedMergeTree
3) Distributed поверх MergeTree
4) Distributed поверх ReplicatedMergeTree
Каждая таблица теперь существует на каждом хосте, потому что мы создали на всем кластере. Инсертим 10к строк данных и сравним
Что получается?
🎈 MergeTree
Данные хранятся только на том хосте, на котором мы заинсертили. На остальных 0
🎈 ReplicatedMergeTree
Данные хранятся на всех репликах одного шарда. На остальных шардах 0
🎈 Distributed
Данные вообще не хранит, они лежат в исходной таблице. В каком-то смысле это как view
Если в основе MergeTree - то данные будут на одной из реплик в шарде. В нашем случае это replica1 для shard1 и replica2 для shard2
Когда мы делаем count(), рандомно выбирается одна реплика из каждого шарда. Т.е. на нашем кластере возможны 4 комбинации:
Это значит, что при каждом новом запросе, например, для хоста 3 мы можем получить либо 5030 строк, либо 0
Если в основе ReplicatedMergeTree - то между репликами будет одинаковое количество строк, но между шардами разное. А при запросе к distributed всегда будет участвовать одинаковое количество строк
🌷 Поэтому если нужно получать консистентные данные, обеспечивать отказоустойчивость - используем Distributed на базе ReplicatedMergeTree и селектим из Distributed
Этот день настал, и я наконец-то поняла, что происходит с разными движками в кх
Возьмем такую конфигурацию кластера: 2 шарда по 2 реплики. И для примера 3 движка: MergeTree, ReplicatedMergeTree, Distributed
Подключаемся к 1му хосту, создаем 6 таблиц на кластере. Чтобы результаты не мешали друг другу, под Distributed создаем отдельные свежие чистые таблички:
1) MergeTree
ENGINE MergeTree()
2) ReplicatedMergeTree
ENGINE ReplicatedMergeTree()
3) Distributed поверх MergeTree
ENGINE = Distributed(local_cluster, default, mt_table, rand())
4) Distributed поверх ReplicatedMergeTree
ENGINE = Distributed(local_cluster, default, rmt_table, rand())
Каждая таблица теперь существует на каждом хосте, потому что мы создали на всем кластере. Инсертим 10к строк данных и сравним
Что получается?
Данные хранятся только на том хосте, на котором мы заинсертили. На остальных 0
Данные хранятся на всех репликах одного шарда. На остальных шардах 0
Данные вообще не хранит, они лежат в исходной таблице. В каком-то смысле это как view
Если в основе MergeTree - то данные будут на одной из реплик в шарде. В нашем случае это replica1 для shard1 и replica2 для shard2
Когда мы делаем count(), рандомно выбирается одна реплика из каждого шарда. Т.е. на нашем кластере возможны 4 комбинации:
1 + 3 = 5030 + 0 = 5030
1 + 4 = 5030 + 4970 = 10000
2 + 3 = 0 + 0 = 0
2 + 4 = 0 + 4970 = 4970
Это значит, что при каждом новом запросе, например, для хоста 3 мы можем получить либо 5030 строк, либо 0
Если в основе ReplicatedMergeTree - то между репликами будет одинаковое количество строк, но между шардами разное. А при запросе к distributed всегда будет участвовать одинаковое количество строк
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥5🤔4😁1 1
Ох, как давно у нас их не было, сегодня смотрим на ROLLUP. Даже если не знаете, попробуйте прикинуть/придумать, а потом я все расскажу
Есть табличка population - она на картинке. К ней делаем такой запрос:
SELECT
country,
region,
city,
SUM(population) AS total
FROM population
GROUP BY ROLLUP (country, region, city)
Сколько строк выведет запрос?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
3👍8🔥4 3
ROLLUP vs CUBE vs GROUPING SETS
Суть этих штук - добавить промежуточные тоталы (как в экселе). Как будто мы group by делаем несколько раз с разными полями
🍣 ROLLUP
country-region-city - 6 строк
country-region - 4 строки
country - 2 строки
all - 1 строка
————
13 строк
Мы с каждым уровнем отбрасываем более детальный столбец и считаем тотал шире
Первые 6 строк - как в обычной группировке (поэтому не расписываю). К ним еще добавляем тоталы по стране с регионом, стране и глобальный тотал:
🎲 CUBE
Здесь нужны все комбинации: по 3 элемента, 2, 1, 0
country-region-city - 6 строк
country-region - 4 строк
country-city - 6 строк
region-city - 6 строк
country - 2 строки
region - 4 строки
city - 6 строк
all - 1 строка
————
35 строк
👥 GROUPING SETS
Здесь можно кастомно задавать группы. В этом примере будет то же самое, что и ROLLUP
Суть этих штук - добавить промежуточные тоталы (как в экселе). Как будто мы group by делаем несколько раз с разными полями
GROUP BY ROLLUP (country, region, city)
country-region-city - 6 строк
country-region - 4 строки
country - 2 строки
all - 1 строка
————
13 строк
Мы с каждым уровнем отбрасываем более детальный столбец и считаем тотал шире
Первые 6 строк - как в обычной группировке (поэтому не расписываю). К ним еще добавляем тоталы по стране с регионом, стране и глобальный тотал:
Russia Moscow Oblast NULL 12800
Russia Siberia NULL 1600
USA California NULL 4900
USA Texas NULL 2300
Russia NULL NULL 14400
USA NULL NULL 7200
NULL NULL NULL 21600
GROUP BY CUBE (country, region, city)
Здесь нужны все комбинации: по 3 элемента, 2, 1, 0
country-region-city - 6 строк
country-region - 4 строк
country-city - 6 строк
region-city - 6 строк
country - 2 строки
region - 4 строки
city - 6 строк
all - 1 строка
————
35 строк
GROUP BY GROUPING SETS ((country, region, city), (country, region), (country), ())
Здесь можно кастомно задавать группы. В этом примере будет то же самое, что и ROLLUP
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18👍9🔥6
WAP
Недавно на работе грумили задачку по реализации WAP-паттерна на Iceberg. А сегодня мой коллега написал статейку на 4 минутки про этот подход. При первом ознакомлении все расставляет по полочкам
https://habr.com/ru/articles/937738/
Для преисполненных - доклад с митапа про инкрементальные загрузки на dbt с использованием паттерна
https://youtu.be/iLxdRPUWS8k?si=pS6jpMj5E-KRtsWe
Недавно на работе грумили задачку по реализации WAP-паттерна на Iceberg. А сегодня мой коллега написал статейку на 4 минутки про этот подход. При первом ознакомлении все расставляет по полочкам
https://habr.com/ru/articles/937738/
Для преисполненных - доклад с митапа про инкрементальные загрузки на dbt с использованием паттерна
https://youtu.be/iLxdRPUWS8k?si=pS6jpMj5E-KRtsWe
Хабр
WAP паттерн в data-engineering
В русскоязычной части интернета присутствует много статей по теме паттернов разработки, однако я не нашел никакой информации о паттернах работы с данными. В данной статье я хочу рассказать о паттерне...
❤9🔥8 4
Топ мировые конфы по DE
После просмотра доклада из Netflix в предыдущем посте я задумалась - а какие вообще есть мировые де конференции в 2025, которые можно посмотреть онлайн? Что там вообще происходит, у нас еще есть точки соприкосновения?
Почитала статейки, комменты на реддите, посмотрела на каналы, подписчиков, темы видосов и вот что откопала:
1️⃣ Самым прикольным мне показался Data + AI Summit от Databricks
Здесь ссылка только на 1 плейлист, а их там просто десятки
2️⃣ "no bullsh*t data conference", бывший DataEngConf - Data Council, тоже показался интересным
3️⃣ Проходит в Лондоне - Big Data LDN
4️⃣ по dbt есть Coalesce
Будет круто, если вы следите за какой-нибудь конфой и поделитесь ссылочкой
После просмотра доклада из Netflix в предыдущем посте я задумалась - а какие вообще есть мировые де конференции в 2025, которые можно посмотреть онлайн? Что там вообще происходит, у нас еще есть точки соприкосновения?
Почитала статейки, комменты на реддите, посмотрела на каналы, подписчиков, темы видосов и вот что откопала:
Здесь ссылка только на 1 плейлист, а их там просто десятки
Будет круто, если вы следите за какой-нибудь конфой и поделитесь ссылочкой
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Data + AI Summit 2025 - Data Lakehouse Architecture and Implementation
Share your videos with friends, family, and the world
❤12🔥7
Метод «затраты-эффект»
Ко мне поступил запрос - как понять, что задача бесполезная? Расскажу, как мы это делали
📊 У нас проводились общие ретро на несколько команд, куда выносились текущие проблемы. На них команды рандомно перераспределялись, и мы генерили идеи по их решению. Напротив каждой идеи мы ставили сложность ее реализации и импакт от нее по шкале от 1 до 10
Например, есть такой пул идей:
1️⃣ Поднять собственный кластер
Нужны ресурсы, настройка, проект, но позволит самим управлять своим кодом и релизить в любое время
Complexity - 10, Impact - 10
2️⃣ Навесить SLA на поставщиков данных
Нужно утвердить сроки, условия, подключить юр отдел, но данные будут качественнее
Complexity - 6, Impact - 9
3️⃣ Ускорить время раскатки проекта
Есть идеи для решения, нужно потестить, при этом разработчики не будут ждать час, смотря на медленно появляющиеся логи
Complexity - 1, Impact - 7
4️⃣ Автоматически генерировать зависимости между тасками в даге
Непонятно, как подступиться, забираем у пользаков возможность самим управлять, еще и может все поломаться
Complexity - 10, Impact - 1
5️⃣ Добавить алерт на null поля в данных
Всего 1 sql-скрипт, а мы узнаем состояние данных сразу, а не через день, когда витрина некорректно рассчиталась и нужно все пересчитать
Complexity - 1, Impact - 10
6️⃣ Сделать одинаковый нейминг временных таблиц
Техническая доработка, на бизнес не влияет
Complexity - 1, Impact - 1
Теперь - как приоритизировать? Думаю, многим это известно или понятно на подсознательном уровне:
⬇️ C ⬆️ I - легко делать, крутой результат, берем в первую очередь
⬆️ C ⬆️ I - задача сложная, но оправдывает инвестиции, берем после первых
⬇️ C ⬇️ I - несложная, но и эффекта нет, берем по остаточному принципу, когда больше нечем заняться
⬆️ C ⬇️ I - теряем много времени ради ничего, не берем
В нашем примере можно взять в таком порядке:
5 3 2 1 6 (4 выкидываем)
Ко мне поступил запрос - как понять, что задача бесполезная? Расскажу, как мы это делали
Например, есть такой пул идей:
Нужны ресурсы, настройка, проект, но позволит самим управлять своим кодом и релизить в любое время
Complexity - 10, Impact - 10
Нужно утвердить сроки, условия, подключить юр отдел, но данные будут качественнее
Complexity - 6, Impact - 9
Есть идеи для решения, нужно потестить, при этом разработчики не будут ждать час, смотря на медленно появляющиеся логи
Complexity - 1, Impact - 7
Непонятно, как подступиться, забираем у пользаков возможность самим управлять, еще и может все поломаться
Complexity - 10, Impact - 1
Всего 1 sql-скрипт, а мы узнаем состояние данных сразу, а не через день, когда витрина некорректно рассчиталась и нужно все пересчитать
Complexity - 1, Impact - 10
Техническая доработка, на бизнес не влияет
Complexity - 1, Impact - 1
Теперь - как приоритизировать? Думаю, многим это известно или понятно на подсознательном уровне:
В нашем примере можно взять в таком порядке:
5 3 2 1 6 (4 выкидываем)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥8❤4 4
Однажды в резюме видела такие строчки в описании. Долгое время думала 🤦♂️ По сути то же самое, как добавить “подписан на дата инженеретту”
С другой стороны, человек осведомлен, что творится в индустрии, расширяет горизонты своих познаний
Хотя эти митапы каждую неделю проводятся…
Что думаете?
🤔 - кринж
❤️ - не кринж
С другой стороны, человек осведомлен, что творится в индустрии, расширяет горизонты своих познаний
Хотя эти митапы каждую неделю проводятся…
Что думаете?
🤔 - кринж
❤️ - не кринж
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔123❤28 6🔥1🤷1
Serializability vs Linearizability
Этим понедельничным деньком настало время разобраться между двумя очень похожими терминами🤓
💋 Есть 2 счета с денюжками: A=30 и В=70, Тотал=100. Они не могут в тотале уйти в минус. Две параллельные транзакции пытаются снять по 100
Что происходит в несериализуемой, сериализуемой и линеаризуемой системах?
1️⃣ Несериализуемая
1: снимает 100 с А
2: снимает 100 с В
Баланс: А=-70, В=-30, Тотал=-100
Возникла аномалия, мы нарушили правило банка
2️⃣ Сериализуемая
1: снимает 100 с А и пытается закоммитить
2: снимает 100 с В и пытается закоммитить
БД сравнивает результат, как если бы они выполнялись последовательно. Если закоммитить сначала первую транзакцию, то состояние будет А=-70, В=70, Тотал=0. Вторая не может снять, потому что в тотале 0, она откатывается. Можем вместо первой закоммитить вторую, таймлайн не важен
3️⃣ Линеаризуемая
1: снимает 100 с А, текущее состояние А=-70, В=70, Тотал=0
2: уже видит, что в тотале 0, и даже не пытается
А вот здесь уже важно, какая транзакция началась раньше
〰️ 〰️ 〰️
Надеюсь, вам стало чуточку понятнее)
Этим понедельничным деньком настало время разобраться между двумя очень похожими терминами
Что происходит в несериализуемой, сериализуемой и линеаризуемой системах?
1: снимает 100 с А
2: снимает 100 с В
Баланс: А=-70, В=-30, Тотал=-100
Возникла аномалия, мы нарушили правило банка
1: снимает 100 с А и пытается закоммитить
2: снимает 100 с В и пытается закоммитить
БД сравнивает результат, как если бы они выполнялись последовательно. Если закоммитить сначала первую транзакцию, то состояние будет А=-70, В=70, Тотал=0. Вторая не может снять, потому что в тотале 0, она откатывается. Можем вместо первой закоммитить вторую, таймлайн не важен
1: снимает 100 с А, текущее состояние А=-70, В=70, Тотал=0
2: уже видит, что в тотале 0, и даже не пытается
А вот здесь уже важно, какая транзакция началась раньше
Надеюсь, вам стало чуточку понятнее)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15 2
Урок русского языка без литературы
У нас на этой неделе проходят уроки в рамках программы "Back To School". Вчера был урок русского языка про письменную коммуникацию, который вел Максим Ильяхов из "Пиши, сокращай"🙂
Он очень прикольный, по манере общения тоже все четко, ясно, без лишней воды, параллельно все конспектировал. В конце прислали методичку по деловой коммуникации, по мотивам которой был урок
Только по ходу урока осознала, что не сделала домашку. Надо было воспользоваться шансом и подготовить интересные вопросики для такого препода😪
Цель урока - писать так, чтобы быстро изучить и быстро принять решение
Если нужно обсудить несколько тем, лучше сделать несколько писем. Иначе:
⏺️ нам не ответят, потому что длинное письмо отложат на потом
⏺️ нам не ответят, потому что сразу на все 5 тем сложно ответить
⏺️ нам ответят на одну тему, а про остальные забудут
Обязательно структурировать текст, чтобы какие-то блоки можно было пропустить
Основные мысли:
У нас на этой неделе проходят уроки в рамках программы "Back To School". Вчера был урок русского языка про письменную коммуникацию, который вел Максим Ильяхов из "Пиши, сокращай"
Он очень прикольный, по манере общения тоже все четко, ясно, без лишней воды, параллельно все конспектировал. В конце прислали методичку по деловой коммуникации, по мотивам которой был урок
Только по ходу урока осознала, что не сделала домашку. Надо было воспользоваться шансом и подготовить интересные вопросики для такого препода
Цель урока - писать так, чтобы быстро изучить и быстро принять решение
В письме желательно заложить такой объем тем, который можно охватить за 90 секунд на светофоре или за один укус пирожка
Если нужно обсудить несколько тем, лучше сделать несколько писем. Иначе:
Обязательно структурировать текст, чтобы какие-то блоки можно было пропустить
Нельзя из письма отправлять читателя на поиски того, что вам от него нужно. Представьте, что вы
принесли документы директору на подпись. Вы не будете просить его самостоятельно сходить за
документами в бухгалтерию
Основные мысли:
— Одно письмо — одна область
— Делить на разделы
— Простые подзаголовки
— Начала разделов дружат с заголовками, не прятать ключевые слова внутри абзаца
— Просьбы всегда на отдельной строке, в отдельном абзаце
— Перечни связаны с заголовками
— Абстракция + пример + антипример (образы, как кино)
— Человек + делает + так
— «Объясни как пятилетке»
— Сокращай через ChatGPT / Ollama
— В задачу добавить доп. материалы
— Чтобы напомнить: «Это еще актуально»
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤2
Soft Delete Techniques
Или как понять, что ваши данные кому-то нужны
Есть два героя: Миша (продуктовый аналитик) и Артем (дата инженер). С ними случилась такая история:
🙂 привет, Миша! ты три года назад создавал таблицу user_orders_check_agg_m, она занимает 100тб, последний раз использовалась в прошлом году. она еще нужна, можно удалить?
🦔 привет! можно, мы ее готовили для экспериментов, но их отменили
Кластер задышал, ведь с репликацией это целых 300тб свободного места
Через неделю Миша приходит:
🦔 Артем, помнишь, мы обсуждали табличку user_orders_check_agg_m? у нас снова запускается эксперимент, нам срочно нужно ее восстановить!!!
😳 ......
Артем находит цепочку зависимостей:
user_orders_check_agg_m ->
user_orders_check_agg ->
user_orders_check ->
user_orders_abc, user_orders_def ->
user_orders
Причем все промежуточные таблицы уже удалены
Артем поднимает старые скрипты, адаптирует их под новую версию спарка, переписывает под новую схему данных, пересоздает таблички, тестирует, ставит на расчет. Через месяц все готово
Но команда не успела зарелизить запланированные фичи. Все клиенты ушли к конкурентам
Какие есть варианты, чтобы помочь Артему и команде меньше нервничать в следующий раз?
1️⃣ Переименовать табличку - сразу найдем среди сотен процессов те, которым она нужна
2️⃣ Переместить в .Trash - когда мы удаляем руками из hdfs, они перемещаются в папку .Trash. Там они хранятся столько, сколько задано в fs.trash.interval при настройке кластера. Поэтому будет какое-то время прийти за ними
3️⃣ Переместить в другую папку для мусора и периодически подчищать ее
Есть еще другие варианты? Или это проблема Миши, что он разрешил дропнуть таблицу?😁
Или как понять, что ваши данные кому-то нужны
Есть два героя: Миша (продуктовый аналитик) и Артем (дата инженер). С ними случилась такая история:
Кластер задышал, ведь с репликацией это целых 300тб свободного места
Через неделю Миша приходит:
Артем находит цепочку зависимостей:
user_orders_check_agg_m ->
user_orders_check_agg ->
user_orders_check ->
user_orders_abc, user_orders_def ->
user_orders
Причем все промежуточные таблицы уже удалены
Артем поднимает старые скрипты, адаптирует их под новую версию спарка, переписывает под новую схему данных, пересоздает таблички, тестирует, ставит на расчет. Через месяц все готово
Но команда не успела зарелизить запланированные фичи. Все клиенты ушли к конкурентам
Какие есть варианты, чтобы помочь Артему и команде меньше нервничать в следующий раз?
ALTER TABLE exp.user_orders_check_agg_m RENAME TO exp.user_orders_check_agg_m_trash;
hdfs dfs -rm -r user_orders_check_agg_m_data
INFO fs.TrashPolicyDefault: Moved: 'hdfs://data/user_orders_check_agg_m_data' to trash at: hdfs://data/.Trash/Current/user/admin/user_orders_check_agg_m_data
hdfs dfs -mv user_orders_check_agg_m_data some_trash_folder
Есть еще другие варианты? Или это проблема Миши, что он разрешил дропнуть таблицу?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15 11❤5👍2😁2