Наконец-то куплю трешку на Патриках!
Сразу к делу! Думаю о том, чтобы завести бусти.
И вот, что вы получите:
1. Еженедельные созвоны (от обсуждения технологий и работы до сплетней, денег и скандалов)
2. Задачи и вопросы с реальных собеседований (+ условия, описание проекта и так далее). А возможно даже и записи с собесов!
3. Закрытый чат для подписчиков (никаких лишних глаз, любое NDA станет не NDA)
4. Мастер-классы по софт скиллам (это я для прикола написал, но может кто-то хочет побороть страх. Можем попробовать поработать)
Я хочу заработать на хаты на патриках и начать разыгрывать их в канале за правильное решенные задачи.
Хочу 500 руб / месяц. Зависит от трафика.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25🗿19😁7😢4⚡2
Выбери стоимость БУСТИ
Anonymous Poll
20%
50 ₽
14%
100 ₽
20%
250 ₽
12%
350 ₽
12%
500 ₽
38%
Не буду подписываться
Это не реклама, но видос годный.
Есть два кандидата:
Один с хардами, но мертвый, другой общительный, но слабый на харды. Кого возьмете, кого лесом пошлете?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥4💯1
.
b-tree | hash | brin | gist | sp_gist
Для тех, кто прям преисполнился в постгре, есть ДВА ЧАСА класного материала про индексы в БД!
Тема большая, словно океан, поэтому всегда можете возвращаться к этому докладу в течение обучения и работы!
Всегда успеете вернуться сюда и посмотреть!
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Андрей Сальников — Индексы в PostgreSQL. Как понять, что создавать
Подробнее о Java-конференциях:
— весной — JPoint: https://jrg.su/gTrwHx
— осенью — Joker: https://jrg.su/h7yvG4
— —
Любой разработчик знает, что индексы — это мощный инструмент, который может улучшить работу запросов в базе данных и, как следствие, сократить…
— весной — JPoint: https://jrg.su/gTrwHx
— осенью — Joker: https://jrg.su/h7yvG4
— —
Любой разработчик знает, что индексы — это мощный инструмент, который может улучшить работу запросов в базе данных и, как следствие, сократить…
🔥15👍3⚡1💯1
Когда я на степике решал задачки, то меня бесили однострочники в комментах. Эти люди предлагали свои решения в одну строку, когда ты написал 30.
В одной строке есть колоссальный плюс до того момента, пока она читабельна. В ином случае, решение лучше расписывать и не выкобениваться. Надо учитывать и время, которое потратит человек, когда будет читать ваш гениальный код!
Задача: Надо вывести 1, если из первой строки можно собрать вторую строку. И 0, если нельзя
В комментах интересны самые короткие решения! Но можете делиться и полотнами))
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥3👌3❤🔥2
Сходу отвечаем на вопросы HR:
1. Почему уходишь с нынешней работы?
2. Сколько хочешь денег?
3. Что для тебя красный флаг в команде?
К слову вы обязаны спрашивать и ту сторону. Можете прямо проводить собеседование им. Пусть рассказывают о себе также подробно, как и вы. Вам потом с этими людьми работать между прочим.
1. Расскажите типичную задачу на работе. Подробно, где пишите код, кто его проверяет или так без код ревью в прод?
2. Команду собираете с нуля или на замену того, кто ушел? А DevOps будет, который будет сервисы поднимать или на меня повесите?
3. Что из стека в вакансии вы реально используете, а что в планах использовать?
Очевидно, что не только вы можете быть с сюрпризом, но и команда. Поэтому прагматичней подходите к таким делам. Что, если команда разваливается или вы будете там единственным спецом, а может это вообще будет команда из стажеров и никакой экспертности. Спрашивайте про бюрократию. Про системного аналитика. Короче ковыряйте больные места у работодателей. Иначе в будущем их придется ковырять вам.
Пишите в комменты свои вопросы рекрутерам и командам на собесе!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13💯6🔥3👾1
Речь идет про
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