Смотрите. Вот вы прочитали данные из источников, трансформировали и если просто сохраните данные в таблицу, то физически она будет в виде кучи мелких файлов формата .parquet. Если это таблица за полгода, то будут сотни миллионов мелких файлов, что для HDFS очень плохо. Нужно стремиться, чтобы файлы были около 128Мб!
Что надо делать?
Если у вас инкрементальная загрузка за один день, после всех трансформаций пишете
df.repartition("date_column") - "date_column" это столбец с датой
Тогда Спарк перемешает все данные в памяти и склеит их в один файл. Тут нужно будет посмотреть. Если файл будет создаваться размером от 10 до 130Мб, то в целом можно так и оставить.
Если будет 1Гб, то можно в repartition добавить цифру 8. Тогда он будет разделять на равные кусочки по 128Мб.
Дальше, после того, как за один день у вас все укрупнено, пишите partitionBy("date_column"). Тогда для каждого дня создается отдельная папка.
В итоге у вас столько папок, сколько загружено дней. Одна папка = один день. И внутри каждой папки один и несколько крупных файлов.
В итоге при чтении таблицы, можно читать только определенные дни без FULL SCAN и сами файлики внутри папок не будут нагружать HDFS + их чтение тоже ускорится, так как это чтение одного файла, а не тысяч мелких.
Чтобы понять, насколько много у вас файлов и папок в HDFS есть такая команда:
hdfs dfs -count -v hdfs://hive/schema/table
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥8❤5👎1
Как по залету? Будем праздновать?
Anonymous Poll
10%
Залетел в IT летом 2024
10%
Прохожу собесы сейчас
3%
На руках оффер. Выхожу на работу
20%
Только начал учиться
10%
До 2025 пока не планирую собесы
38%
Залетел в IT раньше 2024
10%
Другое
👍6❤2🔥2
Уверен, среди вас есть люди, кто хочет начать вести свой телеграм канал. Но вы не знаете, как собрать первых подписчиков, о чем писать и будут ли тебя читать..
Сначала найти спрос, потом сделать предложение. Не наоборот. Если вы думаете, что рассказы про вашу жизнь или работу в целом могут быть интересны людям - это заблуждение.
Дальше я только обслуживал этот спрос, создавая контент. Дополнительный трафик у меня идет с YouTube. Там люди переходят с моего канала и с подкастов. Есть спрос на то, что такое DE, как войти в IT или как сменить направление в IT. Пока этот спрос существует, я могу его обслуживать и получать аудиторию.
Более того. Если выбранная ниша еще и на хайпе, то она сама будет толкать вас наверх, даже если качество вашего контента будет невысокое. В период золотой лихорадки сами знаете, что продавать.
Как выбрать нишу?
Поискать, что уже есть на рынке и оценить объем людей. Очевидно, что в DE нельзя собрать канал на 1млн человек. Столько просто нет специалистов. Но 10 владельцев бизнесов в вашем канале может принести больший профит, нежели 1млн школьников.
Люди приходят в ваш канал и вам нужно дать им реальную ценную инфу. Им пока что плевать на то, какой вы талантливый. Закройте им их боль, а потом может у них появится к вам симпатия. Вы работаете наемным сотрудником и обслуживаете спрос ваших подписчиков.
Вот вам пример. Я могу создать канал, в котором буду рассказывать, как я пишу посты, как монетизируется канал, как запустить бусти и в целом привлекать аудиторию.. Часть из вас может перейти туда и вот мои первые 10-20–30 человек. Я закрываю потребность, потому что знаю, что она есть.
Не наоборот. Кстати, если вам интересен формат бусти в IT и насколько он шире по контенту, чем основной канал, то можете перейти по ссылке и подписаться.
https://boosty.to/halltape_data
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2🔥2
Объявляем большой сбор дата-специалистов!
На бесплатный Aston Data Engineering Meetup в Санкт-Петербурге.
Обсудим, как Modern Data Stack изменил подход к ETL-процессам и поговорим про неожиданные возможности оркестратора Airflow. Спикерами выступят опытные дата-инженеры, поэтому будет полезно специалистам уровня Middle+ и выше.
📍Мероприятие пройдет в двух форматах: онлайн и офлайн.
Когда: 17 октября
Офлайн 18:30 (мск) / онлайн 19:00 (мск)
Где: БЦ «Ренессанс Холл», 6 этаж, 601, Владимирский проспект, 23
Подробнее про темы:
🟢 Data Engineer Unirest Никита Целищев разберет подходы старой школы к построению ETL и сравнит их с современными методами. Также он расскажет, как изменилась роль разработчика DWH и дата-инженера c появлением Modern Data Stack.
🟢 Data Engineer ASTON Расим Гарипов расскажет про полезные возможности Airflow, которыми редко пользуются дата-инженеры и другие специалисты, научит писать DAG-и в едином, читаемом и понятном виде. Кроме того, он поделится опытом работы с Data-aware Scheduling и разметкой Data Lineage, и объяснит, зачем нужен triggerer в Airflow и как его задействовать.
👉 Регистрируйся по ссылке и приходи!
Реклама ООО "Астон", ИНН 9715350151, erid=2VtzqxEGTFs
На бесплатный Aston Data Engineering Meetup в Санкт-Петербурге.
Обсудим, как Modern Data Stack изменил подход к ETL-процессам и поговорим про неожиданные возможности оркестратора Airflow. Спикерами выступят опытные дата-инженеры, поэтому будет полезно специалистам уровня Middle+ и выше.
📍Мероприятие пройдет в двух форматах: онлайн и офлайн.
Когда: 17 октября
Офлайн 18:30 (мск) / онлайн 19:00 (мск)
Где: БЦ «Ренессанс Холл», 6 этаж, 601, Владимирский проспект, 23
Подробнее про темы:
🟢 Data Engineer Unirest Никита Целищев разберет подходы старой школы к построению ETL и сравнит их с современными методами. Также он расскажет, как изменилась роль разработчика DWH и дата-инженера c появлением Modern Data Stack.
🟢 Data Engineer ASTON Расим Гарипов расскажет про полезные возможности Airflow, которыми редко пользуются дата-инженеры и другие специалисты, научит писать DAG-и в едином, читаемом и понятном виде. Кроме того, он поделится опытом работы с Data-aware Scheduling и разметкой Data Lineage, и объяснит, зачем нужен triggerer в Airflow и как его задействовать.
👉 Регистрируйся по ссылке и приходи!
Реклама ООО "Астон", ИНН 9715350151, erid=2VtzqxEGTFs
👍8👎4😁4❤3🔥3
🦾 Топ команд в Terminal!
Это один из пунктов Roadmap V2.0
Самые частые команды в Linux, которыми я пользуюсь почти каждый день. Нет смысла учить весь линукс, когда вы будете реально использовать только 10 команд.
ls - список файлов и директорий в текущем каталоге
cd - смена текущего каталога
pwd - показать текущий путь в каталог, где вы находитесь
cp - копирование файлов и директорий
mv - перемещение или переименование файлов и директорий
touch - создание файлов
vim - встроенный редактор кода
rm - удаление файлов и директорий
cat - вывод содержимого файла
grep - поиск строк в файле
Сохрани, чтобы не забыть!
Это один из пунктов Roadmap V2.0
Самые частые команды в Linux, которыми я пользуюсь почти каждый день. Нет смысла учить весь линукс, когда вы будете реально использовать только 10 команд.
ls - список файлов и директорий в текущем каталоге
ls -l # подробный список
ls -a # включая скрытые файлы
cd - смена текущего каталога
cd /path/to/directory
cd .. # выйти из текущей папки на уровень выше
pwd - показать текущий путь в каталог, где вы находитесь
pwd
cp - копирование файлов и директорий
cp source destination
mv - перемещение или переименование файлов и директорий
mv source destination
touch - создание файлов
touch file.txt # создать файл
vim - встроенный редактор кода
vim my_code.py
# Чтобы выйти из vim, нужно нажать esc, потом :wq (это сохраняет файл и выходит из него)
rm - удаление файлов и директорий
rm file
rm -r directory # удаление директории и её содержимого
cat - вывод содержимого файла
cat file
grep - поиск строк в файле
grep "apple" file
Сохрани, чтобы не забыть!
🔥39👍16😁4
Пробую уже выставлять свет для видоса по Apache Spark, пока пишу сценарий.
Напишите свои вопросы, которые вам непонятны в Спарке или вообще может непонятны в этом инструменте!
Я постараюсь добавить все в один материал, чтобы не вышло сильно душно, но и для собесов вы полезную инфу подчеркнули!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36❤4👍3
Этот пост исключительно для тех, кто уже вкатился или скорее уже давно катится в IT.
Поскольку это колоночный формат, то очевидно, что сжать данные одного типа в колонках очень легко! Но как именно?
Первый вариант – Словари:
Это похоже на foreign key в СУБД. Берем уникальные значения из столбца и присваиваем каждому свой индекс. В главном столбце храним уже индекс из таблицы измерений, а не несколько раз одну и туже строку в 100 символов.
Эффективно! Но это работает, когда значения повторяются.
Например "ЦВЕТ". Он 100% повторится несколько раз.
А вот Почтовый индекс такой кардинальности не даст. Поэтому способ хороший, но не универсальный.
Второй вариант – RLE (Run length encoding):
Тут все просто. Сначала пишем кол-во значений, потом само значение.
Есть строка ABAABBBBCCCCCCC
После сжатия 1A1B2A4B7C
Вообще супер удобно и эффективно!
Но плохо работает, когда очень мало или вообще нет повторений:
До: QWERTYUIOPASDFGHJKL
После: 1Q1W1E1R1T1Y1U1I1O1P1A1S1D1F1G1H1J1K1L
Третий вариант – Delta:
Пишем только первое значение, остальное это только разница от предыдущего.
т.е. есть данные по времени 18:20:19, а второе значение пишем 1 (вместо 18:20:20)
Все это прекрасно визуализировано на скрине!
Кто хочет почитать поглубже, то вот ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥8❤4
This media is not supported in your browser
VIEW IN TELEGRAM
К Антону Назарову многие относятся негативно, но я разделяю его точку зрения. Если у вас так себе зарплата и вам не нравится, что айтишники зарабатывают больше, при этом работая в более комфортных условиях, то вкатывайтесь в IT!
Не существует справедливости. Брулетова вообще смотрит на нас из розового гелика и думает, что мы лохи)) может себе позволить…
Кто-то может работать больше, а зарабатывать меньше. К сожалению не каждый труд оплачивается одинаково. И вы действительно можете убиваться на работе, на объектах, в небе, в поле, под землей и получать меньше, чем айтишник, который сидит дома или на берегу моря и пьет смузи. При этом он реально может работать меньше. Но и бывает такое, что у человека огромная ответственность, а за нее ничего не платят. Это конечно самое печальное. Я могу вам рекомендовать только менять профессию. Никто вам деньги просто так сверху не заплатит. Меняйте сферу.
Копать нельзя кодить.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28🔥8❤5👎1
Разработчик DWH, ты тут? 😳
Специально для тебя запустили бесплатный онлайн-интенсив в Открытых школах Т1! Прокачай скилы и, если повезет, попади в штат Холдинга Т1 — крупнейшей ИТ-компании в России по версии RAEX и CNews Analytics 2023.
Зачем участвовать?
🔵 Бесплатное обучение в гибком формате: по вечерам, онлайн, из любого города РФ
🔵 Уникальный рыночный опыт. Проекты Т1 ежегодно побеждают в ИТ-конкурсах: Global CIO, Национальной банковской премии и др. Тебя обучит и поддержит команда профессионалов.
🔵 Возможность влиять на развитие ключевых отраслей экономики: в портфеле Т1 800+ высокотехнологичных проектов и 70+ продуктов и услуг на современном техстеке для крупнейших компаний и госсектора.
🔵 Карьерный рост и поддержка. Уникальный карьерный фаст-трек для выпускников Открытых школ помогает молодым специалистам прокачаться до уровня мидла в Т1 за 1,5 года.
Успей подать заявку до 25 октября!
Реклама. ООО «Т1» ИНН: 7720484492. Erid: 2SDnjdCzAfD
Специально для тебя запустили бесплатный онлайн-интенсив в Открытых школах Т1! Прокачай скилы и, если повезет, попади в штат Холдинга Т1 — крупнейшей ИТ-компании в России по версии RAEX и CNews Analytics 2023.
Зачем участвовать?
Успей подать заявку до 25 октября!
Реклама. ООО «Т1» ИНН: 7720484492. Erid: 2SDnjdCzAfD
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👎5🔥3❤2
На самом деле речь конечно же не об этом. Хотя про CI/CD тоже не сильно много пишут, как и про секс)
Так вот мне удалось прикоснуться к
Вы написали код. Дальше загрузили его на GitHub в свой репозиторий (папку). А куда он должен деваться дальше? Ведь на гитхабе хранятся только папки с файлами, внутри которых просто код. По факту файлы с кодом – это тупо текст.
Так вот, чтобы написанный код (например он запускает скачивание - обработку - загрузку данных из источников в хранилище) запустился и начал работать, вам нужно настроить еще одну программу. В самом просто виде эта программа может быть на самом GitHub в виде GitHub Actions. Визуально это просто вкладка на сайте, где вы можете выбрать готовые (написанные за вас) файлики в формате .yaml с "машинными" инструкциями внутри. Либо вы можете написать свой файлик и поставить там формат .yaml.
Этот файл в формате .YAML визуально внутри похож на список инструкций по типу, прочитай код, запусти код, установи библиотеки, запусти тест, проверь разницу кода в ветках и так далее. Возможностей там куча, предел только ваша фантазия. Грубо говоря, вы этим файликом просто говорите GitHub, чтобы он взял ваш код и выполнил с ним то, что вы ему прикажите. Например можно автоматизировать, чтобы при каждой загрузке кода в гитхаб, сразу же запускался процесс, который проверяет файлы на синтаксис и стиль кода. Если у нас будет 100 программистов, то это будет очень удобно. Для каждого разработчика есть одинаковые правила по стилю кода и если их код не проходит тесты, то это подсвечивается и например не дает коду запускаться дальше и отправляться на сервера в продакшен (чистовик).
Лично у меня задача была в следующем. Представьте 100 разработчиков пишут SQL скрипты, которые создают таблички в Базе Данных. Разрабы просто закачивают свой код на гитхаб, но ведь в БД таблицы не появляются. Нужен процесс, который будет отслеживать, что появились новые скрипты и их надо запустить на сервере, чтобы таблицы создалИсь. Это понятно. Но если процесс будет запускаться каждый раз, когда 100 разрабов загружают свой код, то мы будем все время пересоздавать одни и те же таблицы. А их кол-во будет расти и нагрузка вместе с ней. Значит надо сделать так, чтобы создавались только новые таблицы, которых ранее не было на GitHub. Это мы можем отследить, просто посмотрев разницу коммитов (загрузок) за предыдущий раз. Видим разницу, что добавилось всего 3 скрипта – вот их и грузим!
Эту всю логику и пишут в файлике. Там также пишут условия, когда должен запускаться код. Например только при PULL REQUEST или при PUSH в мастер ветку, а может и вовсе оставить только ручной запуск (буквально можно запускать самостоятельно с кнопки). Также в этом файле пишут инструкции, которые устанавливают нужные библиотеки, нужную версию языка и так далее. Более того, чтобы создать таблицы в СУБД, надо ведь знать имя базы данных, схему и прочее. Все это еще может быть секретными данными, которые нельзя просто так светить в коде и есть требования, чтобы они шифровались и передавались в файл по "защищенному каналу". Короче говоря, чем сложнее логика и крупнее компания, тем сложнее становится процесс CI/CD.
ПодЫтожим. Код загрузился на гитхаб, потом его проверила программа на то, что он запускается, загрузила на сервер, установила все необходимые библиотеки и запустила. ВООБЩЕ ВСЕМ ЭТИМ занимается DEVOps и казалось бы причем тут я. Но мне было интересно взять эту задачу.
Ладно, отвечу цитатой классика: "Вы держитесь здесь, вам всего доброго, хорошего настроения и здоровья!"
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍7❤4👏1
Записи не будет, просто можем пообщаться, потестим насколько эта тема ок. Позадаете вопросы свои в комменты..
Че думаете?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍4❤3
ЗАЛЕТАЕМ ПО ССЫЛКЕ
https://t.iss.one/halltape_data?livestream
Обсуждение в комменты к этому посту
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Я – Дата Инженер
💻 Как войти в IT?
💵 Как стать Data Engineer
🗄 Что такое Big Data и кто ей управляет?
_____________________________
Делюсь опытом и полезными материалами. Написать мне @halltape
💵 Как стать Data Engineer
🗄 Что такое Big Data и кто ей управляет?
_____________________________
Делюсь опытом и полезными материалами. Написать мне @halltape
❤5👍2🔥1
Вообще вопросов можно задать побольше и по острее:
Кто зарабатывает больше? А кем быть проще? А можно ли сменить потом направление? А кто виноват в плохих данных?
Хочу начать с качества данных
На практике конфликтов я пока не встречал
Может аналитики не дали четкого ТЗ, а дата инженеры сделали, как сами сочли нужным. Или косяк ДЕ, что вовремя не уточнили нюансы и теперь мы сидим с некачественными дашбордами и краснеем.
Вообще проблема коммуникаций между людьми и командами – это всегда актуальная тема. Если вам не охота лишний раз писать, звонить человеку и что-то спрашивать по данным, то потом это может выйти боком.
Как видите, общий навык общения нужен обоим профессиям.
Что касается сложности работы, то рынок очень рандомный. Зарплата не всегда прямо коррелирует с обязанностями, поэтому DA в одной компании может зарабатывать больше DE в другой и наоборот. При этом оба могут писать DAGs в Airflow и это будет норма.
Вопрос остается в том, куда вы хотите сами углубляться и двигаться. Если больше в технику и ближе к DevOps, то это лучше через DE. Если вам интересно более визуальная часть и анализ данных, то это в DA и BI. А дальше уже копать в этом направлении и прокачивать навыки в инструментах.
Если вы не знаете какое направление выбрать, то существует куча каналов с миллиардом полезных материалов (бесплатных).
И вот один из таких - Аналитика данных
А вот топ ссылок с полезными материалами:
Мне кстати еще зашла крутая у него идея с отдельным big data книжным каналом - КАНАЛ С БЕСПЛАТНЫМИ КНИГАМИ
Рекомендую подписаться!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍7❤6
23 октября 22:00
Для всех, кто недавно подписался, расскажу, че вас ждет до НГ! Расскажу про Roadmap V2.0 и заодно закинем туда ваши хотелки...
СТРИМ будет 23 октября в 22:00 на полтора часа. Записи не будет, поэтому кто хочет, тот пусть приходит!
Покажу, как выглядит ROADMAP! Кстати, если вы не последний человек в ДЕ, то кто-то из тех, кто будет у вас на собесе, вполне мог бы учиться по этому материалу. Поэтому, если у вас есть конкретные пожелания к будущим джунам-мидлам, можете закинуть свой личный материал (да хоть бусти или менторство). С вас контент, с меня реклама.
Также поболтаем на любые темы, просто познакомимся, навалю вам базы, мотивации и
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥6❤2