дата инженеретта – Telegram
дата инженеретта
2.98K subscribers
242 photos
28 videos
4 files
102 links
мелкое — крупно,
в глубоком разговоре
мудрость приходит

по вопросам сюда: @aigul_sea
Download Telegram
Как я забила всю оперативку

⭐️Нужно было переложить табличку из кх в s3 через Airflow. Табличка небольшая, проблем быть не должно

Идея №1

1️⃣Считать табличку из кх в pandas dataframe
2️⃣Сохранить датафрейм в .csv файл
3️⃣Залить в s3 через либу boto3

Пока тестирую и отлаживаю на 10 строках - все ок. Убираю лимит - и Airflow становится очень плохо, он не прогружается и не дает завершить таску 🥲

Смотрю в источник - там 12млн строк. Неужели pandas не может столько переварить? Очевидно, надо искать другой способ

Идея №2

Я раньше сталкивалась, что в кх можно прям запросом читать из s3. Вот так:

SELECT * FROM s3()


Оказывается, это работает и на запись!

INSERT INTO FUNCTION s3()
SELECT * FROM your_table


В эту функцию можно добавлять разные настройки. Из полезного - разбить вашу табличку на несколько файликов. Примерно такой код у меня работает:

INSERT INTO FUNCTION
s3(
'filename_{{_partition_id}}.csv.gz',
'S3_ACCESS_KEY',
'S3_SECRET_ACCESS_KEY',
'CSVWithNames'
)
PARTITION BY rand % 10
SELECT * FROM your_table;


Что тут есть?

⚫️{_partition_id} – это переменная, которая пробрасывается сама. Просто счетчик от 0
Если вставлять этот код в строку, нужно обязательно обрамить скобками {} дважды – иначе s3 воспринимает это по-другому и падает с ошибкой

⚫️.gz – алгоритм компрессии файликов

⚫️CSVWithNames – мы включаем названия столбцов первой строкой

⚫️PARTITION BY [столбец] - можно выбрать существующий или просто задать рандомно

И этот метод работает просто в разы быстрее. Теперь табличка на 12 млн строк пишется за несколько секунд 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2119👍3
Мы в этой жизни всё делаем правильно?

Картина буквами: 10% от всего плана запросов
🌚10👍1🤔1
Я прочитала DAMA-DMBOK

Это книжка на 830 страниц - "Свод знаний по управлению данными". Мне ее как-то советовали прочитать, и вот полтора месяца я упорно это делала 📖

Вкратце эта книга про фреймворк DAMA (Data Management Association). Про то, как должно быть. Он включает такие аспекты:
🔵архитектура и моделирование данных
🔵хранение
🔵безопасность
🔵интеграции
🔵основные данные
🔵метаданные
🔵качество данных
и еще несколько (на картинке - колесо DAMA)

Я по ходу чтения записывала интересные, новые для меня моменты, буду постепенно делиться)

Зачем это все нужно?

Одни и те же данные складываются по-разному, называются по-разному. Одинаковые метрики считаются по-разному.

Глобальная цель - чтобы я из маркетинга и Оля из любой другой команды понимали, что цена всегда до ндс, а clientid имеет тип string и обозначает человека, который купил у нас продукт.

Это нужно, чтобы больше не переписываться в почте на тему "А это что означает? А что заложено в эту метрику?". Мы делаем каталог данных, и каждый ходит туда и смотрит нужные ему вещи:
🟡бизнес-смысл
🟠бизнес-правила
🟡источник
🟠логика преобразований из системы в систему (lineage)

🙂 Еще сквозь всю книгу красной линией проходит мысль - бизнес и IT должны работать вместе. Кстати, у нас когда-то вставал вопрос - нужно ли IT-командам на 100% понимать, как их работа влияет на метрики бизнеса?

В Сбере есть активность "Random Coffee", где рандомно подбирается зареганный собеседник. И несколько человек мне ответили, что они просто крутят модельки и жизнь прекрасна 🌼

Что думаете?

#dama_dmbok
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2365👍2
Кейс про паркеты

Предыстория

Мы хотим перекладывать паркет-файлики из одной системы в другую. Выложили их на s3. Все, можно забирать. Казалось бы, что может пойти не так?

Но этот процесс прошел несколько итераций, прежде чем я сказала "все ок" 😊

1️⃣
Проблема: Illegal Parquet type: FIXED_LEN_BYTE_ARRAY
Смысл: паркет не умеет читать тип FixedString из кх
Решение: удаляем столбец или сохраняем в формате String

2️⃣
Проблема: Required field 'codec' was not present!
Смысл: связано с несопоставимыми алгоритмами компрессии файлов
Решение: используем другой алгоритм (н-р, Snappy)

3️⃣
Проблема: Строковые типы отображаются вот так: [57 65 62 4B 69 74]
Смысл: отображается в бинарном виде
Решение:

SELECT unhex(regexp_replace(StartURL, ' ', ''))

(или без unhex)

Но это неудобно все преобразовывать на этапе чтения

4️⃣
Проблема: делаю printSchema() и вижу, что все строковые поля имеют тип binary
Решение: сохраняем в string

5️⃣
Проблема: date в формате 20031
Смысл: это количество дней от 1970-01-01
Решение:

df.withColumn(
'new_date',
F.date_from_unix_date(date)
)


6️⃣
Проблема: функция date_from_unix_date появилась в версии 3.5.0, а у нас ниже
Решение: делаем примерно так и кладем все в string на этапе записи

SELECT date_add('1970-01-01', 20031) AS new_date


Ура😑
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
🐘 Ребятки, в эту субботу в Москве состоится осенний бигдатник 🐘

Он будет:
⏺️про технологии - Flink, Streamhouse, Iceberg, Debezium
⏺️про кейсы
⏺️про нетворкинг

Движуха на целый день с едой!💃
Кто не в мск - будет онлайн стрим 📺

Кто боится ходить на такие сходки - у меня дома для мотивации уже сколько лет висит цитата Коко Шанель:

Если вы хотите иметь то, что никогда не имели, вам придётся делать то, что никогда не делали.


Я еще в прошлый раз хотела сходить - практически выиграла билеты, но что-то пошло не так( Так что собираюсь в этот раз обязательно быть 🙂 Надеюсь с кем-то из вас увидеться❤️

🔉Координаты:

⏺️30.11.2024, 10:20
⏺️Таганская, 9

Когда будете покупать билет, введите в поле "Онлайн/Офлайн, Компания" промокод DATAENGINE. Тогда есть большой шанс, что следующий бигдатник для вас будет бесплатным!

За билетами сюда
Please open Telegram to view this post
VIEW IN TELEGRAM
135🔥4👍1
Ураа, мне пришла приглашалка на митап 🌼 Неужели я достигла уровня значимых факапов?

🍿 А в комментах можете поделиться, были ли у вас неудачи и как вы из них выпутывались. Было бы интересно посмотреть)
Please open Telegram to view this post
VIEW IN TELEGRAM
😁13👍1
🎄 Завтра стартуют advent-челленджи 🎄

Advent of Code
Advent of SQL

На sql я наткнулась только недавно. Возможно, он проводится в первый раз?
А вот про advent of code мне рассказали в 2020 году в кругу американских прогеров и математиков

🗓️ Это связано с адвент-календарем, в котором каждый день с 1 по 25 декабря люди открывают по одному окошечку с подарком по случаю католического рождества

💻 Обычно первые задачки супер изи, но до 25 дня я не доходила (потому что алгосы - это слабенькое место), а в прошлом году уровень в разы повысился из-за развития AI штук. Что будет в этом году - даже не знаю. Хотя там есть глобальный лидерборд, и некоторые пишут длиннющие однострочники и решают в терминале за миллисекунды 😱

В общем, это интересная штука, потому что:

🩷есть сторителлинг, т.е. вы не просто решаете рандомные задачки, а они еще связаны единой канвой - эльфами, тропическими островами и прочими штуками

🩷можно круто прокачаться в использовании либы itertools (если на питоне)

🩷можно почекать на реддите, как другие решают на абсолютно любом языке (есть даже Excel, Zig, J, Uiua, Raku и куча других ноунеймов)

🩷можно выставить свое решение, чтобы кто-то прокомментил. мои решения даже набирали два лайка 😁

🩷а еще однажды на собесе спросили, в каких это я хакатонах участвую 😅 возможно, это был плюсик в карму!
Please open Telegram to view this post
VIEW IN TELEGRAM
25👍9
System Design. №2 Расчет ресурсов

Как же это все интересно, куча циферок... ☺️

Нужно учитывать 4 пункта:

1️⃣ Пользователи
MAU, DAU, сколько в пик, прирост в день/месяц/несколько лет, отношение чтения к записи, сколько генерится контента

💬 MAU/DAU (Monthly/Daily Active Users) - сколько пользаков в месяц/день

2️⃣ Сеть
Сколько одновременных соединений, трафик, какие данные и сколько передают пользаки в день, RPS

Ну и облака - это медленнее, чем физические сервера

3️⃣ Вычисления
Сколько rps на получение текста, на чтение и запись в бд, на запуск ML-моделей

Недавно общалась с одним коллегой из отдела биометрии, он сказал, что на прохождение даже одной модельки может уходить время 200ms. А если их несколько - вот ты уже стоишь у кассы и ждешь несколько секунд, пока пройдет оплата 😐

4️⃣ Хранение
Сколько нужно сейчас, сколько будет прирастать в течение длительного периода
Что мы будем хранить на HDD, SSD, RAM. Горячие/теплые/холодные/ледяные данные
Сколько нужно заложить на репликацию



Пока я поняла, что нужно:

- прикинуть DAU, MAU
- научиться считать RPS, скорость, соединения, количество данных
- экстраполировать это на несколько лет вперед
- взять цены и просуммировать

Если вообще нет представлений, то можно поковыряться в планах облачных провайдеров и составить общую картинку.

Но с осознанием пока сложно, чувствую, надо это все еще раз пересмотреть)

#system_design
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🤷2
Рекомендасьон

Мой коллега по парте сходил на конфу Highload 2-3 декабря
Эксклюзивный контент🔥
И вообще пишет про классные штуки
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from DataSkewer
🔆 Вот и подошел к концу Highload++ 2024.
Первый раз был на такой крупной конференции, и я конечно же восхищен.
Вот что я могу сказать, из плюсов

Очень удобный бот конференции в котором можно отслеживать доклады и устроить Random Coffee

Очень широкий спектр тем (от даты до архитектуры, маркетинга и безопасности)

Прекрасный кейтеринг

Куча C-levelов российского бигтеха с которыми можно вживую поговорить и задать вопросы (переборов страх быть кринжовым)

Колоссальные возможности для нетворкинга - я поставил себе цель, познакомиться и обменяться контактами с 10+ специалистами и перевыполнил эту цель в 1.5 раза, без особых усилий.

Из минусов (каинда):

стоит разделить конференцию на фестивальную часть и часть докладов - невозможно физически посетить все доклады и все стенды - я старался держать баланс, но охватил от силы 30 процентов стендов и 20 процентов докладов. (Доклады к тому же шли в параллель)

Звездами этой конференции были PHP и Golang - у меня немного другой стек

Ну и подводя итог, рекомендовал бы посетить эту конференцию, специалистам уровня Middle+
Тк у многих докладов есть неслабый порог вхождения, и вам нужно быть хотя бы специалистом конкретно вашей области + иметь хорошие знания в general computer science (вспоминаем о входителях в айти, говорящих, что алгоритмы, паттерны проектирования и прочая БАЗА никому не нужна) - иначе для вас конференция сведется лишь к фестивальной части.

В следующем посте, на основе данных этой конференции, расскажу о том когда вашему хадупу/S3 стоит задуматься об использовании Apache Iceberg.
Решила завести свой профиль и канал в сетке

Тык для канала
Тык для профиля

📱Пока что моя лента на 90% состоит из мемов, но там ещё есть вакансии, новости, истории и т.д. По сути сетка - это "линкедин дома"

Подписывайтесь, если уже там, или залетайте, если ещё нет 🌼
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍4🌚3
По следам F*ckup Meetup

🎙️ Вчера прошёл митап, где рассказывали про фейлы. В заявке нужно было рассказать свою историю, самые крутые зачитали со сцены)

Просто 🩷звездочка🩷- это фейл с видоса

А также такие:

Перенастраивал систему авторизации, в итоге удалил токены всех существующих пользаков

Ввёл регламент проведения работ на проде. В тот же вечер сам зашёл и случайно удалил там все конфиги

1го апреля дропнула бд на проде. Все узнали только 2го, потому что никто не верил.
Но на следующий день пришёл бизнес, и все поверили


Из докладов особенно понравились вот эти:

1️⃣ Тестировали на проде в пт в 17:00 на АЭС с эвакуацией целого региона (почти).
Запустили скрипт, сервак не ответил, все ушли домой, а скрипт был зациклен🌚 В итоге когда сервак подключился, в правительство полетела куча отбивок о превышении уровня радиации

2️⃣ На графике платежей начали появляться 7-значные цифры. Причём у клиентов не списывались деньги, потому что у платежного шлюза был лимит в 100к (но на это не было нормальных логов)

А у нас в бд я тоже видела аномалии по типу "150 млрд пользователей в день", но там проблема с переполнением)

3️⃣ Что-то умное про кафку и карафку (kafka для ruby) 😅 Как решали инцидент с 12 до 21, как тасовали консьюмер группы, как перезапускали кластер без перебалансировки. И что в итоге была проблема в лишнем топике, который когда-то удалили, но где-то он остался



Считаю вечер продуктивным!
⭕️митап интересный
⭕️фуршет был
⭕️встретила 2х знакомых и познакомилась ещё с 4мя
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍75
Прошла неделя Advent of SQL

Поделитесь, как у вас дела? Кто ещё проходит?

💻 Мне реально зашла эта штука! sql я люблю, задания прикольные, даже пришлось научиться парсить xml (не знаю зачем, но все же)

🐸💬 На реддите тоже завели треды под это дело. Оказывается, в DuckDB и Snowflake можно вот так в одном селекте обращаться к столбцам, которые мы только что посчитали, очень удобно 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍19
This media is not supported in your browser
VIEW IN TELEGRAM
Про лаги в тг

Заметила такой лаг:

1. Пишу второй коммент под постом
2. Выхожу из поста в канал
3. Вижу только 1 коммент
4. Захожу обратно, вижу 2
5. Выхожу
6. Вижу 2 коммента, но нет картинки профиля
7. В момент клика снова вижу, как стал 1 коммент
8. Выхожу
9. Вижу 2 коммента, вижу появление своей аватарки

В свете курса по System Design могу предположить, что проблема с консистентностью)

💎 Есть известная теорема CAP, она состоит из 3х понятий. Я попросила AI помочь объяснить вам примеры нарушений как для 5летних😁

C - Consistency - пользователь видит одинаковые данные

🎙 Представь, что ты и твой друг строите башню из LEGO. Вы договорились, что башня будет зелёной. Но, когда он уходит, ты делаешь её красной.

A - Availability - при любом обращении система возвращает ответ

🎙 Вы с друзьями устроили вечер настолок. Все готовы играть, но ты не можешь найти свои карточки. Все друзья ждут, а потом скучают и уходят(

P - Partition Tolerance - система работает, даже если между нодами сетевые проблемы

🎙 Представь, что ты и твой друг решили сделать "крутой рисунок". Ты рисуешь в одной комнате, а он - в другой. Двери закрыты. В итоге ты нарисовал динозавра, а он - единорога.

Всегда можно обеспечить только 2 из 3. 3 из 3 - это уже невозможно.

🕰 Есть также Eventual Consistency - прямо сейчас данные отличаются, но через какое-то время они будут одинаковыми. И такой подход: автор всегда видит свои данные, но другие могут увидеть их чуть попозже. Например, мы записали данные в master, а читаем из slave. Из-за задержки репликации данные могут опаздывать, поэтому на разных нодах разные результаты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4💅3
🎅 Розыгрыш!

В преддверии нового года решила разыграть полезную книжку по де!

Счастливчику отправлю доставкой через озон (проверьте, что я смогу до вас это доставить)

Окончание: 18.12.2024 в 10:00

Всем удачи! 🎁
🔥427🤷5👍41👀1🎄1
дата инженеретта
🎅 Розыгрыш! В преддверии нового года решила разыграть полезную книжку по де! Счастливчику отправлю доставкой через озон (проверьте, что я смогу до вас это доставить) Окончание: 18.12.2024 в 10:00 Всем удачи! 🎁
Выбор дополнительных победителей (в количестве 3):

Победители:
1. hypaslav (@hypaisonfire)
2. Igor (@GorbunovIgor)
3. RED

Проверить результаты



Всё, подарок отправлен #1!
Всех с наступающим! ❤️❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
😁13👍53
Вот и настала пора подводить итоги года!

Корпораты прошли, адвенты закончились, тайные санты проведены, подарки закуплены (или будут закупаться), ну а я собрала некую смесь итогов из канала, работы и жизни 🥗

Немного циферок:

🎄 1672 подписчика: а в начале года вас было всего 182!!! - это в 9,3 раза больше без единой монетки 🍪🍪
🎄 260 постов
🎄 50 походов на концерты, съемки и митапы
🎄 28 поездок на поезде
🎄 22 собеса в нашу команду
🎄 8 встреч random coffee
🎄 7 прочитанных книжек
🎄 3 пройденных курса: де, систем дизайн, англ
🎄 3 путешествия: Питер и Йошкар-Ола
🎄 2 переезда
🎄 2 статьи на хабре: тык1, тык2
🎄 1 подкаст со мной
🎄 1 рилс в качестве амбассадора Сбера

а еще:

🧤 командой развернули собственный кластер и многому научились
🍰 попробовала себя в роли девопса
успела позаниматься k-pop и фигурным катанием
☕️ научилась собирать кубик рубика 5х5

Хотела сделать подборку постов и поняла, что они все такие крутые! 🤭 Вот просто можно взять и полистать. Я пишу от души, и любой пост - это частичка того, что я сделала/осознала/ощутила, но все-таки самые-самые-самые из самых-самых вот здесь:

👍 Крутецкие посты
dbt deep dive
Покручиваем графы
Что спросить на собесе?
Зарубежные подкасты про данные
Вопросы подписчиков
Кейс про паркеты

🥰 Про оптимизацию
Разница между MAX(dt::date) и MAX(dt)::date
LEFT убивает индексы
Разбор count(x)
Как я забила всю оперативку
Как заруинить джойн в спарке?

🤓 Покекать
Вредные советы
Как ПСИ проходили
Мама, я девопс
Наш командный сленг
Командный мудборд
И еще раз ссылочка на подкаст^^



Надеюсь, этот год был для вас продуктивным, а следующий будет еще круче!
Может быть, до конца года еще что-нибудь напишу, пока не придумала🤭 В заготовках уже лежат 13 постов, но они не ложатся под новогоднее настроение, поэтому вернемся к ним в следующем году❄️

Мои решения для Advent of SQL можно глянуть тут, разберем интересные задачки уже в январе

А пока всех поздравляю с наступающим новым годом! 🔴
❄️ Желаю довести недоделанные дела до конца, хорошо отпраздновать и хорошо отдохнуть, загадать самые искренние пожелания, а я загадаю, чтобы они у всех у вас сбылись! 🍪
Please open Telegram to view this post
VIEW IN TELEGRAM
535🔥10👍4🎄44🤔1