"Data Value Design Patterns Еще одна интересная глава. Она посвящена добавлению бизнес-ценности нашим данным, хотя технические моменты тоже есть 🎨 Data Enrichment Тут есть два подхода для обогащения данных. На самом деле в книге простые вещи говорятся сложными словами, поэтому несколько страниц текста я уложу в две строчки: Pattern: Static Joiner - обычный джойн двух таблиц Pattern: Dynamic Joiner - джойн двух потоков с временным окном 🤩 Data Decoration Бывает нужно добавить к нашим данным дополнительные поля, и вот что предлагается 1️⃣Pattern: Wrapper У нас есть табличка, мы хотим добавить в нее метаданные/технические поля/рассчитанные поля (версия джобы, время расчета). Паттерн относится к организации таких доп. полей в таблице: можно их добавить отдельными столбцами, закинуть в структуру, вынести в другую таблицу - как вам нравится Мы такой подход используем. Но если требования часто меняются, то я бы все доп поля вынесла в один struct/json 2️⃣Pattern: Metadata Decorator Мы хотим делать все то же самое, но не показывать пользователям технические поля. Тогда: 🤩Для бд создать вьюшку без тех полей или запретить чтение определенных столбцов на уровне прав 🤩Для s3 есть штука с тегами, их можно навесить на весь файл. Теги - это пара ключ-значение: mytag=myvalue. Как работать с тегами можно полистать тут 🤩Для отправки в кафку писать в header 🌸 Data Aggregation Как под капотом происходит агрегация данных 1️⃣Pattern: Distributed Aggregator Это про шаффлы в распределенных системах. В контексте шафла важно учитывать data skew. С ним можно бороться, например, такими способами: 🤩добавить соль, т.е. мы подмешиваем рандомное значение, чтобы равномернее распределить поле ``` dataset.withColumn(""salt"", (rand() * 3).cast(""int"")) .groupBy(""group_key"", ""salt"").agg(...) .groupBy(""group_key"").agg(...) ``` 🤩включить AQE - адаптивку в спарке. Ниже полезные конфиги, с которыми мы работаем: ``` spark.sql.adaptive.enabled - включает адаптивку spark.sql.adaptive.advisoryPartitionSizeInBytes - объединяет мелкие партиции или разделяет крупные spark.sql.adaptive.skewJoin.enabled - разделяет партиции в джойнах spark.sql.adaptive.skewJoin.skewedPartitionFactor - кэф для определения крупной партиции spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes - то же самое, только в байтах ``` Еще интересный поинт про шафл - когда я только пришла, то как раз в команде велись обсуждения на эту тему. По дефолту даже если на одной ноде все посчиталось, то никто не заберет ее ресурсы, пока не посчитается все. На случай, чтобы не пришлось заново решафлить, если что-то упадет External Shuffle Service в Spark как раз хранит данные шафла отдельно. Когда посчиталось, ресурсы ноды могут отправиться другому приложению, потому что данные шафла в безопасности 2️⃣Pattern: Local Aggregator В контексте спарка мне показалось, что это про broadcast Дальше в главе рассказывалось, как строить витрины с сессиями пользователей, про особые виды сортировок - думаю, к этому можно будет вернуться, когда реально понадобится, для себя пока не вижу применения #depatterns"
"Data Value Design Patterns Еще одна интересная глава. Она посвящена добавлению…
Из этого канала
- #511SQL Advent. Days 4-7 ✨ Решила объединить, потому что в уровне easy (4 и 7 день)…
SQL Advent. Days 4-7 ✨ Решила объединить, потому что в уровне easy (4 и 7 день) нужно написать всего по 3-4 строчки ✨ День 5 потребовал от меня несколько…
- #512"Мысли с матемаркетинга Посмотрела несколько интересных докладов с…
"Мысли с матемаркетинга Посмотрела несколько интересных докладов с матемаркетинга.
- #513Стартанул новый Advent of SQL!!! ⏳ В прошлом году его делал паренек на…
Стартанул новый Advent of SQL!!! ⏳ В прошлом году его делал паренек на волонтерских началах.
- #508"Тимлидский митап Сегодня прошел тимлидский онлайн-митап, описание которого мне…
"Тимлидский митап Сегодня прошел тимлидский онлайн-митап, описание которого мне очень понравилось.
- #507SQL Advent. Day 3 Уровень hard - уже похоже на задачки с собесов. На скрине…
SQL Advent. Day 3 Уровень hard - уже похоже на задачки с собесов. На скрине одна из таких - когда нужно найти топ по каждой категории 📍 Полезные ссылки Адвент…