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

по вопросам сюда: @aigul_sea
Download Telegram
Forwarded from БАШНЯ
HARD SKILLS🫥

Сегодня разбираем реальный кейс о том, как один файл и смена инфраструктуры положили Nexus и остановили релизы👩‍💻

Делитесь этим постом с друзьями и пишите свои вопросы в комментарии ✍️

Автор поста: @data_engineerette

#hardskills
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
18👍135😭1
IPv4 vs IPv6

👀 Я раньше очень часто смотрела на таблицу с событиями пользователей из яндекс метрики. Там были столбцы ClientIP и ClientIP6:

ClientIP - IPv4 с которого было установлено TCP соединение с сервером

ClientIP6 - IPv6 с которого было установлено TCP соединение с сервером

Причем ClientIP6 никогда не было заполнено. И я все время задумывалась: а что там вообще должно лежать?

👩‍💻 И вот недавно я собиралась поиграть с европейскими ребятками. Они подняли свой собственный сервер, чтобы пинг был меньше. Скинули мне примерно такую ссылочку:

http://[2a02:8071:78f1:e662:416d:f389:ff96:442e]:8080/

Я в первый раз увидела, что такое IPv6 на самом деле)

Оказалось, что на их стороне роутером не поддерживается IPv4, а на моей стороне провайдером не поддерживается IPv6

🌎Нашла интересную карту, где показано, что в США, Европе показатель доступности около 60%, Саудовская Аравия и Индия под 80%, пока у нас всего 3%. Представляете?
https://stats.labs.apnic.net/ipv6/

Google показывает 9%, но складывается примерно такая же картина:
https://www.google.com/intl/en/ipv6/statistics.html

@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
😭14👍72
Никогда не ешьте в одиночку и другие правила нетворкинга

🤓 Я увидела эту книгу в рекомендациях, заинтриговало название, но как будто она вообще не про нашу жизнь) Она про конец 20го века, Америку и ведение бизнеса

Кратко вот так:
📌составить список будущих контактов
📌познакомиться с ними
📌периодически им всем звонить и приглашать на встречи
📌быть оргом
📌создать личный бренд и сообщество
📌вертеться возле денег и в кругах сильных этого мира

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

😧 А это уже совсем cringe moment: звонить людям на автоответчик во внерабочее время, чтобы не тратить время на общение, но в то же время напомнить о себе. «Если ты не хочешь разговаривать, зачем звонить?» - моя мама

Но я все-таки процитирую и прокомментирую некоторые мысли, которые мне понравились и которые хоть как-то можно привязать к нам

Про "силу слабых связей"

Сильные связи - это наши близкие друзья, родственники. И они посещают одни и те же места, как и мы, а слабые связи общаются с совершенно другими людьми

Про деньги

Если то, что вы делаете, могут сделать многие, то обязательно найдется кто-то, кто готов будет сделать это за меньшую плату


Тут вспоминается конкуренция на позицию джуна де. А ведь если этот кто-то не нашелся, значит, это вы?

Творчество бесполезно, если от него нет практической отдачи. Постоянно думайте о том, каким образом это поможет заработать побольше денег


Мама мне говорила то же самое) Чтобы я занялась репетиторством, потому что хорошо учусь, или преподавала сольфеджио, потому что хорошо получается, или фоткала свадьбы, потому что увлекаюсь фотографией. Но в этом мире существуют же хобби?

Про знакомства

Знакомясь с новым человеком, будьте готовы ему что-то рассказать. Все, что вы прочли и узнали в своей жизни, ничего не значит, если люди не считают вас интересным собеседником


Я недавно задумалась, что пора бы уже выучить пару анекдотов на русском и английском, подготовить смешную историю из своей жизни и топ-3 интересных факта о себе. Пока в этом списке (по моему мнению) - я участвовала в постановке оперы «Турандот» в гвардии принцессы. Норм для факта?

Не гоняйтесь за лидерами. Лучше попробуйте найти лидеров завтрашнего дня


По сути это как выйти замуж за айтишника-тимлида или за айтишника-джуна, но с потенциалом

Про лайфхаки

1️⃣Клонировать события - если есть люди, с которыми нужно встретиться, но время ограничено, то можно их всех пригласить в одно место, чтобы еще и познакомить их друг с другом. А еще кого-то пригласить пораньше, а с кем-то задержаться. По-моему, это гениально

2️⃣Понравилась идея при знакомствах спрашивать любимый трек и пополнять свой плейлист

3️⃣Говорить людям, что с ними очень приятно общаться

@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
178💅4👍3
Подъехала задачка!

На картинке a, b - исходные таблицы, res - итоговая

Нужно написать один запрос, который вернет нужный результат в обоих случаях

@data_engineerette
🔥93🌚2💅1
Откуда у них доступ к моему Airflow
😁86🌚4
Худшие фейлы в DE

Наткнулась на тред в реддите, где обсуждались фейлы на работе. Мне больше всего зашли 2 истории, они такие смешные и страшные одновременно🤯

1️⃣Стриминг писал в то же самое место, откуда и читал. Это все длилось год, поэтому накопилось сотни триллионов миллиардов версий документов. Проблема обнаружилась, только когда к ним пришел AWS и пожаловался на проблемы в своих системах

Неужели за этот год они не заметили, как эти пайплайны работают все медленнее и медленнее, почему такая высокая нагрузка и что в таблицах кучи дублей?

2️⃣DE понизил уровень логирования до DEBUG, и это привело к расходам в 100к долларов за неделю

Кажется, теперь я знаю способ, как можно уменьшить расходы компании. Ничего не логировать 😁

💰 Мы сейчас тоже переходим в эру FinOps. Будем пугать аналитиков, чтобы писали оптимальные запросы 😁

А у вас было что-то супер серьезное?

Ссылка на тред

@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
107👍5🔥2
Когда работаешь с айсбергом, но есть нюанс
😁30
max_by/min_by

Узнала про прикольные функции, они заменяют оконку/CTE на одно поле

Пример - вывести имя сотрудника с максимальным стажем по каждому департаменту


result = df.groupBy("department").agg(
F.max_by("name", "years")
)


И все! Не надо никаких row_number = 1

В Spark SQL можно еще и фильтр набросить:


spark.sql("""
select
department,
max_by(name, years) filter (where name is not null)
from employees
group by department
""")


А в Trino еще можно собрать массив топ-n в убывающем порядке:


select
department,
max_by(name, years) AS top_employee,
max_by(name, years, 2) AS top_2_employees
from employees
group by department


Аналог в ClickHouse - argMax

@data_engineerette
👍35🔥1453
Влияние ИИ на маркетинг

🔝 Раньше бренды пытались быть в топе выдачи в поисковике, участвовали в аукционах, чтобы выбить себе первые места

Когда я работала в маркетинге, наши аналитики очень часто обсуждали органический трафик. Это пользаки, которые перешли на сайт из поиска, а не рекламного баннера. Помню, как они заходили в браузер с разных устройств и с инкогнито, чтобы перепроверить актуальную позицию. Мы парсили запросы по ключевым словам с упоминанем бренда и без, и это все мониторилось на дэшах

💻 Сейчас же многие пользаки читают нейроответы (я в том числе) и уже там находят решение. При этом бренды остаются не в курсе, в позитивном или негативном контексте они там упоминаются

По-моему, это открывает большое поле для манипулирования нашим выбором и сознанием) Нужно всего лишь чекнуть, какие источники анализирует нейронка, опубликовать на этих сайтах "какой у нас крутой продукт" и (вуаля!) нейронка говорит, что у вас самый лучший продукт 😁

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

✏️ Теперь бренды меняют подходы, чтобы нейронка их чаще упоминала в своих ответах. Они покупают пресс-релизы, где будет в позитивном ключе описываться компания, указывают точные реквизиты, чтобы было понятно, о какой компании идет речь, и в целом оптимизируют сайты под нейропоиск

SEO (Search Engine Optimization)
AEO (Answer Engine Optimization)
GEO (Generative Engine Optimization)

Это целая наука, меня прямо сильно затянуло в этом покопаться

@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
👍214
pre-commit

Про эту штуку мне рассказал наш девопс. Короче, можно настроить у себя на ноуте, чтобы перед каждым коммитом прогонялись линтеры, форматтеры, другие легковесные чекеры

Шаг 1. В корне репки создаем файлик .pre-commit-config.yaml и добавляем нужные модули:


repos:
- repo: https://github.com/sqlfluff/sqlfluff
rev: 4.0.4
hooks:
- id: sqlfluff-fix
args: [
--config, tables/.sqlfluff
]


Шаг 2. Устанавливаем pre-commit


brew install pre-commit
pre-commit install


Все хуки лежат в папке .git/hooks/

Шаг 3. Создаем свой файлик и коммитим

При первой попытке запустятся форматтеры и исправят все ошибки:


git commit

sqlfluff-fix...............Failed
- hook id: sqlfluff-fix
- files were modified by this hook

== finding fixable violations ==
== [tables/test_table.sql] FAIL
L: 1 | P: 1 | CP01 | Keywords must be upper case. [capitalisation.keywords]
...
== [tables/test_table.sql] FIXED


На второй попытке файлик будет закомичен:


git commit
1 file changed, 1 insertion(+), 1 deletion(-)
create mode 100644 tables/test_table.sql


Больше примеров

@data_engineerette
👍29🔥93🌚1
AI в OpenSource

🤓 У нас была проблема: аналитики переписывают свои скрипты с синтаксиса Trino на Spark, и в DDL они постоянно забывают поменять varchar на string. В итоге скрипты падают, только когда уже все вмержено в мастер (не круто)

Линтер при этом не отлавливал такие кейсы, потому что varchar в диалекте спарка тоже существует, но с указанием длины: varchar(10)

🤔 Я покопалась в коде линтера, нашла проблему и завела issue на гитхабе

Через 2 недели приходит отбивка, что все сделано. Я смотрю в PR: Copilot внес правки, Greptile все проревьюил🔥🔥

У кого так же в проектах настроено?

PR: https://github.com/sqlfluff/sqlfluff/pull/7459

@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
👍118😭2
Iceberg это must have?

Вы еще не замечали, что становится больше вакансий, где айсберг уже требуют?

С одной стороны, если посмотреть на hh, то вакансий с айсбергом всего около 5%. Но, с другой стороны, в последнее время на меня выходят именно с формулировкой обязательности

Собрала список компаний, которые хотя бы частично уже живут на Data Lakehouse:
📌Ламода
📌Магнит
📌Альфа
📌М.Видео
📌МТС
📌Сбер
📌X5
📌Лента
📌Золотое яблоко (Delta Lake)

А вот Озон по состоянию на прошлый год планировал идти в Data Mesh, чем в Data Lakehouse

Что вообще думаете?

@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
75
Датаклассы

Наконец-то спустя год дошли руки написать про датаклассы 🌷 Меня спросили на собесе в ламоду, и тогда я про них либо краем уха слышала, либо вообще не слышала. Но точно не использовала. Посмотрим, что с ними можно делать

Зачем?

Датакласс описывает данные, но без кучи лишних методов. Он сам вместо нас добавит __init__, __repr__, __eq__ по дефолту. Набор методов можем сами менять с помощью флагов

Как создать?

Чтобы датаклассы заработали, нужно их импорнуть и добавить в виде аннотации:


from dataclasses import dataclass

@dataclass
class SparkParams:
"""Dataclass для параметров spark-submit команды."""

name: str
deploy_mode: str
driver_cores: int
driver_memory: str
executor_cores: int
executor_memory: str
num_executors: int


Готово! Никакие методы добавлять не нужно

Как использовать?


spark_params = SparkParams("test_app", "cluster", 2, "4g", 4, "32g", 8)


Другие фишки

Запрещаем менять поля:


@dataclass(frozen=True)


Задаем дефолтные значения:


@dataclass
class Team:
denoscription: str | None = None
emails: list[str] = field(default_factory=list) # для list/dict/set


Чуть подробнее можно прочитать в короткой статье

@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22124
Делаем ИИ-агента

📞 Сегодня ИИ - это не просто чат-боты, они уже умеют отвечать на письма, бронировать отели и рестораны, искать фразы в видосах, делать короткие видеоролики, записывать подкасты. Мы подходим к точке, когда у каждого человека будет один или несколько агентов, чтобы облегчать нашу жизнь (будем надеяться)

Понять особенности агентов и научиться их применять для реальных задач можно будет на предстоящем вебинаре karpovꓸcourses. Там вы создадите ассистента-бота, который будет отвечать на вопросы по вашим загруженным документам

На вебинаре вы:

🤍 Разберетесь в принципах работы LLM (больших языковых моделей) и генеративного ИИ

🤍 Погрузитесь в архитектуру ИИ-решений для реальных задач: Model, RAG, Agents, MCP

🤍 Узнаете, как выстраивать управление качеством и безопасностью ИИ-ассистентов, снижать галлюцинации и работать в закрытом контуре

Дата вебинара: 17 марта 19:00 мск

Регистрируйтесь по ссылке: https://clc.to/erid_2W5zFGzVVff

Реклама. ООО "КАРПОВ КУРСЫ". ИНН 7811764627. erid: 2W5zFGzVVff
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚5🤷11