Речь идет про
SCD - Медленно меняющимися измерения (Slowly Changing Dimensions)
Если вы сейчас вообще не поняли, что это, то либо вам еще рано, либо прямо сейчас начинайте изучать. Например вы записали в хадуп данные о себе, что у вас 100 рублей на счете. А потом поняли, что хотите больше, а функции update таблицы нет! Нельзя поменять значение, где 100 рублей и поставить 1 000 000. Вам либо стирать таблицу и перезаписывать, либо фильтровать и перезаписывать, либо использовать SCD. Сейчас объясню что это.
SCD позволяет вести историчность строки. Не просто поменять значение в ячейке, а именно контроллировать даты, когда меняется значение. При этом старое значение не удаляется.
Если очень коротко про SCD в HADOOP:
Каждая строка имеет еще один или два столбца с датой. Эта дата обозначает актуальность строки. Например я записал строку 1 июня со значением баланса счета в 100 рублей. А потом 15 июня я выиграл миллион и записал строку с балансом счета в 1 000 100 рублей. Получается у меня две строки с разными датами. И очевидно, что актуальной информацией является строка от 15 июня. При этом я смогу также посмотреть историчность. Это конечно касается Hadoop. Там можно только добавлять данные или стирать вовсе. Поэтому у меня в одной из витрин некоторые строки обновляются именно по такой логике. Есть реально поле, которое содержит в себе дату и чем она позже, тем актуальней данные))
Но по факту в транзакционных системах конечно можно идти дальше и хранить значение, как начала жизни строки, так и конца.
Например у вас два столбца:
start_dt и end_dt
В start_dt пишите 2024-06-01, а в end_dt пишите 9999-12-31. И когда информация обновилась, то вместо 9999-12-31 (столбец end_dt) вы пишите 2024-06-14 (тут именно транзакция). И дальше записываете новую строку, где start_dt пишите 2024-06-15, а в end_dt 9999-12-31.
Таким образом видно, когда строка обновилась (какие были данные и так далее). Добавлять таких строк можно сколько угодно. Плюс в том, что у нас историчность. Минус в том, что куча данных, дополнительных столбцов и стремительно растет нагрузка!
Я рассказал именно про SCD2. Но их всего 5 версий.
SCD1 - это просто изменить значение в ячейке.
SCD3 - это когда у вас хранится предыдущее значение ячейки в соседнем столбце.
SCD4 - это когда основная таблица перезаписывает данные, а старые улетают в отдельную таблицу
Остальные SCD уже являются комбинациями предыдущих и сильно усложняют подход.
Ну кстати мой пример с Хадуп не совсем прям SCD2, но подход похожий. Я просто считаю, что дата окончания актуальности предыдущей строки - это дата добавления новой.
Прикрепляю скрины с Карпов Курсес про SCD. Мне очень нравится, как у них описано это в лекциях!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥14👎2❤1😴1
Сейчас настраиваю Boosty!
Там будет все включено:
Напишите, что еще хотелось бы видеть в подписке?
Я решил, что будет одна цена 300 руб. Мне проще вести один чат и не думать об уровнях подписок.
Если тема будет развиваться, сделаю уровни подешевле. Например только созвоны или только чат.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🔥8💯3🤡1
Итак, на spark пишут код. Он похож на python + sql. Spark нужен для того, чтобы считать очень большие данные. Делает он это распределенно, т.е. на нескольких серверах и параллельно! Pandas например так не умеет, он сразу умрет.
Конечно, в спарке еще много преимуществ и фишек, но о них в другой раз! Для тех, кто хочет почитать поглубже, гуглите BroadcastJoin, getNumPartitions, repartition, coalesce
Please open Telegram to view this post
VIEW IN TELEGRAM
❤38🔥14👍6💯2
Откуда берутся мелкие файлы, почему это плохо и как этого избежать?
Repartition может собрать все куски и склеить их в то кол-во, которое вы ему укажите. Можно как уменьшить, так и увеличить кол-во. При этом он старается склеивать на равнозначные кусочки. Это вызывает доп перегонку данных по сети. Но зато у вас нет перекоса, что в одном файле будет 80% данных, а в другом 20%.
Coalesce работает только на уменьшение и старается избегать перемешивания. Если укажите coalesce(1), то спарк с минимальными потерями все склеит в один файлик и сохранит на диск. Но не надо это делать с огромными таблицами. Это к вопросу про чтение данных. Если коротко: Чтение таких таблиц очень долгое.
А вот почему мелкие файлы это именно плохо, об этом в следующем посте!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥4🤣1
https://boosty.to/halltape_data/purchase/2729017?ssource=DIRECT&share=subscription_link
Я оформил Boosty и теперь он доступен по ссылке!
https://boosty.to/halltape_data/purchase/2729017?ssource=DIRECT&share=subscription_link
Что вы получаете по подписке:
В планах:
300 руб/месяц
Официальный старт планирую 1 июля, но можно залетать уже сегодня.
Ближайший созвон предлагаю уже 6 июля!
Темы для созвонов:
И куча еще других тем, которые вы сможете предложить сами!
https://boosty.to/halltape_data/purchase/2729017?ssource=DIRECT&share=subscription_link
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25💩6👍4👎1💯1
В прошлом посте я писал про мелкие файлы, которые получаются, если сохранить данные с помощью спарка в том виде, каком есть. Т.е. сохраняем в формате csv и он нам сохраняет не один файл, а много. Для сохранения в один нужно делать либо coalsece, либо repartition или toPandas (гуглите что это!)
Итак. Чем же плохи мелкие файлы. В HDFS все данные хранятся в виде блоков. Ну можно считать, что в виде файлов. Стандартно это 128Мб. Если правда файл загрузим меньшего размера, то файл остается того размера, который он и есть. Но не суть. Факт, что загрузили 500мб csv, он разбился на 4 блока. Каждый такой блочок еще и реплицируется (коппируется) по разным серверам.
Это сделано для того случая, если один из дисков вышел из строя, но данные мы не потеряли, потому что есть еще одна копия. Чисто безопасность. Фактор реппликации ставят стандартно 2 или 3. Но можно ставить любой.
Теперь понимаете, что кол-во файлов с репликами у нас выросло довольно быстро. Вместо того, чтобы хранить один единственный файл, мы храним 4 x 3 = 12 файлов (учитываем фактор реппликации).
В HDFS есть такая система, которая записывает адреса, где лежат все блоки. Нам нужно прочитать файл, а он разбит на блоки. Поэтому кто-то должен понимать, в какой последовательности собирать блоки, чтобы получить нужный файл. Эта штука называется NameNode. Она не хранит сами блоки, а хранит только метаданные. Грубо говоря адреса. Кстати, если эту NameNode уничтожить, то восстановить данные уже не получится, хотя физически на дисках они останутся. Поэтому есть Secondary NameNode, которая собирает слепок каждые несколько минут и является неким подстрахующим звеном.
Короче. Вот у вас 12 блоков, вместо одного. Естественно держать информацию о 12 блоках тяжелее, чем об одном. В какой-то момент память у вас закончится. NameNode это обычный диск и он не резиновый. Даже если у вас петабайты на HDD дисках для данных, то у NameNode может уже не оказаться места. И тогда все встанет.
В HDFS важно следить, чтобы не плодилось много мелких файлов. Спарк при сохранении таблиц как раз часто сохраняет файлы в формате parquet размером с Кб. И получается, что у вас может сохраниться до 20 000 новых файлов, хотя можно было обойтись и 4 000. Т.е. более компактно. Стремиться нужно к размеру блока в HDFS.
Резюмируем:
Много мелких файлов плохо – перегружаем память NameNode и чтение 1млн мелких фалойв это долго.
Один, но большой файл – NameNode радуется, но делать full scan 1Пб данных тоже не разумно. Опять долгое чтение, да и никогда никто не читает весь петабайт)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👌4❤1💯1
Карьерный буст для DWH-разработчиков 👨💻
Есть опыт работы от года и желание выйти на новый уровень? На интенсиве в Открытых школах Т1 ты прокачаешь скилы и сможешь попасть в сильную ИТ-команду 🔝
Т1 признан крупнейшей ИТ-компанией в России по версии RAEX 2023, в портфеле 70+ востребованных продуктов и услуг, которые развивают уже 23 000+ ИТ-профессионалов, и мы всегда в поиске новых талантов.
Лучшие из выпускников бесплатного интенсива получат оффер в команды разработки финтех-решений, ИТ-продуктов, облачных сервисов, развития ИИ-решений, интеграции и консалтинга, а также уникальный карьерный фаст-трек до мидла.
⌛️ Быстрое обучение: 1 месяц.
💻Гибкий формат: все этапы онлайн, занятия по вечерам.
Покоряй бигтех — подай заявку до 24 июля!
Старт интенсива — 29 июля.
Реклама. Информация о рекламодателе
Есть опыт работы от года и желание выйти на новый уровень? На интенсиве в Открытых школах Т1 ты прокачаешь скилы и сможешь попасть в сильную ИТ-команду 🔝
Т1 признан крупнейшей ИТ-компанией в России по версии RAEX 2023, в портфеле 70+ востребованных продуктов и услуг, которые развивают уже 23 000+ ИТ-профессионалов, и мы всегда в поиске новых талантов.
Лучшие из выпускников бесплатного интенсива получат оффер в команды разработки финтех-решений, ИТ-продуктов, облачных сервисов, развития ИИ-решений, интеграции и консалтинга, а также уникальный карьерный фаст-трек до мидла.
⌛️ Быстрое обучение: 1 месяц.
💻Гибкий формат: все этапы онлайн, занятия по вечерам.
Покоряй бигтех — подай заявку до 24 июля!
Старт интенсива — 29 июля.
Реклама. Информация о рекламодателе
💩12🔥11👍2🍌2🫡2
Когда я только начинал учиться, я находил курсы по python, sql и даже по Hadoop. Но абсолютно ничего не находилось по Spark.
И нет, у меня не было желания смотреть tutorial от Индусов. Это треш! Я не переношу их акцент.
Я хотел доступного объяснения, без душноты на русском языке и чтобы это было для начинающих, а не для ученых! Я отчасти веду канал именно для этого! Чтобы и самому разобраться и другим помочь!
Поэтому ближе к концу лета, а может и вовсе в сентябре я планирую записать урок по Spark. Это будет видос на youtube. Точно такой же, как вот этот про HADOOP (HDFS) или вот этот про docker. И если вы не видели, то вот этот про data engineering. Подписывайтесь!
Плюс у меня есть крутая идея. Я сделаю пробный видос про Spark для всех, кто подписан на мой бусти. Там я в прямом эфире покажу, как работает Spark и что он из себя представляет. Это будет видос-тестовый прогон. Его я сделаю в 27-28 июля!
Вы сможете в прямом эфире задать любой вопрос по Spark!
Поэтому кому не терпится побыстрее уже познакомиться со Spark, то подписывайтесь на мой бусти. Я покажу вам, как работают DE со Spark на работе.
А на что не смогу ответить, то войдет в финальный чистовой ролик уже на Youtube! Но уже осенью!
Ссылка на BOOSTY
https://boosty.to/halltape_data
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥38❤🔥5👍5❤1💩1
Взял из курса на степике по DE
https://stepik.org/lesson/893154/step/1?auth=login&unit=898095
В целом для совсем нулевого уровня курс норм. Но если вы уже шарите за нормальные формы и знаете отличие OLTP vs OLAP, тогда не стоит.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🔥3👏1
Можем встретиться на IT пикнике, если есть желание))
Если кто был уже, отпишитесь насколько прикольно или интересно. Я в целом иногда бываю на таких мероприятиях. Как минимум можем все увидеться вживую, а не сидеть в своих домах за компуктерами.
https://it-picnic.ru
Не реклама!
Please open Telegram to view this post
VIEW IN TELEGRAM
it-picnic.ru
ИТ-пикник 2025 — летний фестиваль для ИТ-специалистов и их близких
Лекции, интерактивы, детские зоны, музыка и яркий летний день. Ждем вас на ИТ-пикнике 16 августа в Коломенском. Подписывайтесь на телеграм-канал, чтобы не пропустить регистрацию
🔥10🤔4😱2
Это комменты на ютубе к моему видосу про то, кто такие data engineer
Например стать айтишником или пробиться со своим треком в чарты – две разные цели. И там и там есть ошибка выжившего.
Но в первой вероятность успеха намного выше. Тупо айтишников больше, чем успешных артистов. Я такой пример привожу, потому что в прошлом занимался продюссированием треков и понимаю, насколько это сложнее. Там должны все звезды сойтись.
А в айти понятный путь. Делаешь резюме, ходишь на собес. Удачно проходишь собес. Если не зовут на собес, значит корректируешь так резюме, чтобы оно попадало в фильтр. И проходишь эту игру поэтапно. Здесь четкие правила игры и есть ОКЛАД. Это ваш гарантированный доход по ТК РФ.
Не сдаемся и работаем! Те, кто двигаются, те доходят до своей цели!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤25👍11🔥5
ССЫЛКА НА YOUTUBE
ССЫЛКА НА GITHUB
Чувак в реальном времени поднимает сервисы в docker compose и пишет код в airflow. На мой взгляд, если просто повторите за ним и придумаете сами несколько источников, то можно смело говорить, что у вас есть опыт работы с инструментами.
Отличие от комм опыта будет в нагрузке. Вычисления на больших данных конечно требует и контроля ресурсов в Спарке и правильный подход к партициям, кэшированию, сохранениям по слоям и так далее. Но базово понять принцип дата инженера точно получится!
Я рекомендую просто перепечатывать за ним, параллельно закидывая в cht gpt то, что вам непонятно. А еще лучше, если вы будете парсить данные с тех сайтов, которые вам интересны, чтобы было не скучно!
А я пошел смотреть другие видосы у него. Это прям находка!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36👍7❤4
Объявление для тех, кто решает сейчас задачи на степике по python и так далее.
Если вы видите тупорылые задачи на шахматы, на матрицы или в описании задачи вообще описана какая-то история (типа олимпиадная задача), то смело пропускайте это днище и не засирайте себе мозг!
На работе нет таких задач! DE работает с таблицами, строками, списками, словарями и кортежами большую часть времени. У нас данные. У нас нет матриц или шахмат. У нас даже сортировка уже зашита внутрь мозгов питона, спарка и скл.
Не слушайте умников, которые вам затирают про БАЗУ. Типа надо сначала разобраться, как это работает на низком уровне, а только потом уже можно приступать к более сложному.
Решайте то, что решается. Сели за задачу. Если сидите над ней уже 2 часа, смело пропускайте и идите дальше. Вполне вероятно, что вы к ней сможете вернуться уже, когда получите оффер. Но вам тогда будет уже наплевать. А время идет и возраст уходит.
Пожалуйста, будьте прагматичнее и срезайте путь, как можете. В нашей жизни часто играет большую роль удача, а не умение решать олимпиадные задачи!
У меня кипит!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥86👍12😁4❤3👏2
Уже завтра я буду вести стрим по
Это пример реальной задачи на работе.
Важно:
Это будет тестовый прогон в реальном времени. Можно будет задать любые вопросы по коду, настройке и так далее.
Чистовик я выпущу только осенью на своем Youtube канале (будет доступно всем бесплатно)
Более того, данные и сам скрипт я добавлю в свой проект на github, поэтому любой из вас сможет повторить это у себя дома!
Проводить стрим буду на своем Boosty!
Подписывайся, если не хочешь пропустить!
https://boosty.to/halltape_data
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33👍5❤2👎1👏1