Задача.
Посчитать кол-во
Предложите адекватное решение этой задачи. В конце я напишу вариант на Spark. Но хочется увидеть решение на SQL
#sql
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🎄3🔥2💯2😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡3😁2💯1🎄1
Forwarded from Госпожа аналитик 💚 Ия Зотова (Ия Зотова️)
• о блогерстве
• о карьерном треке
• о технологиях и терминологиях
• о светлом будущем, в котором нас заменит искусственный интеллект
• о тухлых комментариях тех, кто не попал в IT
• Ия, Team Lead DA: t.me/Lady_Analyst
• Евгений, DE: t.me/halltape_data
Если было полезно, весело, то поддержите наш проект донатами:
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
НОВОГОДНИЙ: Дубайские модели, обучение, карьера, LeetCode и другие радости айтишников
🎄Новогодний выпуск 2024 в последний рабочий день года. Говорим:
• о блогерстве
• о карьерном треке
• о технологиях и терминологиях
• о светлом будущем, в котором нас заменит искусственный интеллект
• о тухлых комментариях тех, кто не попал в IT
✅ Подписывайтесь…
• о блогерстве
• о карьерном треке
• о технологиях и терминологиях
• о светлом будущем, в котором нас заменит искусственный интеллект
• о тухлых комментариях тех, кто не попал в IT
✅ Подписывайтесь…
🔥8☃5🎄5👍2
Нужны посты про HADOOP (HDFS)?
Anonymous Poll
60%
Нужны. Я вообще не понимаю что это
17%
Нужны. Мой уровень HDFS: знаю, что там файлы блоками хранятся
24%
Нужны. Мой уровень HDFS: знаю, что такое NameNode, DataNode, ClientNode
0%
Нужны. Мой уровень HDFS: знаю, что такое контрольные суммы в NameNode
2%
Нужны. Мой уровень HDFS: знаю, ка строится топология сети
2%
Не нужны. Шарю за HDFS, но без проблем могу комментировать неточности
🔥5⚡3🎄3
SELECT *
FROM table
ORDER BY total DESC
#sql
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8😁3👍1
Forwarded from Denis
Народ, привет!
Кому интересно - Сбер, 9 грейд, есть вакансия на джуниор DE.
Обязанности - разработка витрин с данными Рисков, техстек - кластер на Hadoop.
Требования - отличное знание SQL + python (pandas), плюсом - pyspark.
Условия - офис на Кутузовской, удаленки нет, график 5/2.
Кому интересно - пишите в личку пообщаемся.
Кому интересно - Сбер, 9 грейд, есть вакансия на джуниор DE.
Обязанности - разработка витрин с данными Рисков, техстек - кластер на Hadoop.
Требования - отличное знание SQL + python (pandas), плюсом - pyspark.
Условия - офис на Кутузовской, удаленки нет, график 5/2.
Кому интересно - пишите в личку пообщаемся.
🔥6👍2⚡1💯1👀1
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Госпожа аналитик 💚 Ия Зотова (Ия Зотова️)
Гость: Анастасия Андреева, Senior Java Developer
Анастасия поделится:
• Кто такой senior разработчик и как им стать
• Честно о том, как проходила собесы и что не получилось
• Какие вопросы и задания даёт, когда сама проводит собеседования, поделится лайфхаками
• Расскажет зачем нужны алгоритмы и как использует искусственный интеллект
✅ Подписывайтесь на наши каналы:
• Ия, Team Lead DA: https://news.1rj.ru/str/Lady_Analyst
• Евгений, DE: https://news.1rj.ru/str/halltape_data
• Анастасия, Java Developer: https://news.1rj.ru/str/itdevgrl
Если было полезно, весело, то поддержите наш канал донатами:
💲 https://pay.mysbertips.ru/92484472
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
JAVA: Кто такой сеньор и что спрашивают на собесах | Интервью с Senior Java-разработчиком
Гость: Анастасия Андреева, Senior Java Developer
Анастасия поделится:
• Кто такой senior разработчик и как им стать
• Честно о том, как проходила собесы и что не получилось
• Какие вопросы и задания даёт, когда сама проводит собеседования, поделится лайфхаками…
Анастасия поделится:
• Кто такой senior разработчик и как им стать
• Честно о том, как проходила собесы и что не получилось
• Какие вопросы и задания даёт, когда сама проводит собеседования, поделится лайфхаками…
❤8🔥3🥰2👍1
Начинаю цикл постов про HDFS в стиле «для бабушек».
Hadoop Distributed File System (HDFS). В двух словах – это файловое хранилище. Или навороченный жесткий диск. Представьте, что вам каждый день надо сохранять 500Гб на жесткий диск. На домашнем компе у вас очень быстро закончится место. Придется докупать постоянно много жестких дисков. А куда их столько подключать? Портов не хватит! Поэтому люди начали строить дата центры.
Это здания, в которых стоят шкафы серверов. Т.е. это просто шкаф, в который можно поместить до 30-40 серверов. Каждый сервер выглядит, как полка в шкафу буквально. Сами сервера тоже соединены между собой. Сервер - это несколько жестких дисков (похожие на наши домашние), соединенные между собой. И также соединены между собой и сами шкафы через специальное устройство «типа роутера» или (свич-коммутатор).
В итоге мы имеем огромный кластер из серверов. Или очень большой жесткий диск. При том он еще и удаленный. Каждый сервер может иметь у себя на борту не только диски, но и процессоры, контроллеры и собственную операционную систему. В HDFS это Linux. И да, вы спокойно можете подключиться к любому из доступных вам серверов и полазить внутри него по файловой системе. Все знакомые команды в терминале также прекрасно работают и у них.
С каждым постом мы будет усложняться и углубляться в подробности. Пропускать пост нежелательно, чтобы потом не поехала крыша.
#hdfs
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍5⚡4💯2💅1
Файлы не хранятся одним цельным куском (Как у нас на компьютере). Как правило в HDFS удобно хранить таблицы с данными. Например Excel таблицу в формате csv. (По факту таблички в HDFS конечно чаще хранятся в формате parquet)
HDFS разбивает файл на блоки определенного размера. Поскольку HDFS это не один большой диск, а много мелких (сервера), то каждый блок записывается на разные жесткие диски (сервера). Представьте таблицу размером 1000 Мб. Представьте, что размер блока установлен системой в 100 Мб. Тогда таблица будет разрезана на 10 блоков по 100 Мб. Каждый блок будет записан на разные жесткие диски (сервера). А теперь зачем это надо?
Если в один из жестких дисков прилетит копье, то он умрет и похоронит все данные, которые на нем были. При этом мы не потеряем весь файл целиком, а только 1/10 его часть. Это одна из фишек HDFS. Плюс, если нам нужно прочитать большой файл, то делать это одним компьютером было бы очень долго. Вместо этого, мы можем подключить несколько компов и дать им посчитать по блоку параллельно. Каждый возьмет себе небольшой кусочек и одновременно с другими выполнит вычисления.
Можно ли хранить в HDFS например видео или музыку?
Нет, видосы и музыку сложнее разбить на блоки. Для таких данных существуют другие типы хранилищ.
Здесь я специально избегаю терминов таких как, топология сети, узлы имен, сегменты, репликация. Об этом будет в следующих постах. Мы будем плавно усложнять материал, чтобы никто не путался.
#hdfs
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍6❤🔥3💯1
Хочу порекомендовать канал Кости – дата инженера из моей команды! Он крайне эрудированный парень.. я вот сейчас реально не преувеличиваю. Шарит за многие технологии, языки и именно благодаря ему у меня сейчас крутится витрина данных на кластере. Без его помощи я бы тупил еще долго:)
Костя пишет не только про код, но и просто крайне полезные мысли. Вот мне например понравился отрывок:
…вы чувствуете что чего то не понимаете и упираетесь в стену. То не спешите менять тех стек и область своего изучения. Поспите день - другой, найдете того кто мог бы вам помочь и объяснить непонятный момент и так вы достигнете гораздо большего.
Это важно, потому что :
Вы столкнетесь с такими же проблемами и преградами в другом языке (это называется learning curve по умному)
Костя также относительно недавно делал deep dive по Airflow! В канале можете найти видеозапись презентации. Это у нас в команде мы проводим такие «сходки», когда кто-то один готовит материал по одной технологии и всем остальным рассказывает.
Короче качаем скиллы!
Еще раз ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
DataSkewer
Канал с рассуждениями и заметками о работа DE.
🔥11💯3😁1🎄1
Forwarded from Госпожа аналитик 💚 Ия Зотова (Ия Зотова️)
Гость: Алексей Яцына, Middle Data Analyst, Сбер
Алексей в интервью поделится:
• Как продал
• Как профессия следователя пересекается с аналитиком данных
• Какие курсы на аналитика прошел и какие оказались лучше. Карпов vs Я.Практикум
• Про стажировку и почему отказался от нее
• Почему нравится ходить по собесам и про первую работу в банке
• Про карьерный трек аналитка и куда хочет двигаться дальше
https://youtu.be/znR94HAbf9s
✅ Подписывайтесь на наши каналы:
• Ия, Team Lead DA: https://news.1rj.ru/str/Lady_Analyst
• Евгений, DE: https://news.1rj.ru/str/halltape_data
Если было полезно, весело, то поддержите наш канал донатами:
💲 https://pay.mysbertips.ru/92484472
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
DATA АНАЛИТИК: Следователь продал авто и стал аналитиком | Войти в IT | Интервью с Middle DA
Гость: Алексей Яцына, Middle Data Analyst
Алексей в интервью поделится:
• Как продал свой Феррари и перешел из следователя в аналитики
• Как профессия следователя пересекается с аналитиком данных
• Какие курсы на аналитика прошел и какие оказались лучше…
Алексей в интервью поделится:
• Как продал свой Феррари и перешел из следователя в аналитики
• Как профессия следователя пересекается с аналитиком данных
• Какие курсы на аналитика прошел и какие оказались лучше…
❤5🔥3💯2
Forwarded from дата инженеретта
К чему был предыдущий вопрос?
🧳 На днях у нас с коллегой возник такой кейс: есть 50 таблиц, содержащих колонку с датой, но там есть дата, дата и время и unix timestamp. Цель - нужно их все объединить. БД - ClickHouse.
Итерация 1:
Количество считанных строк - 46 млрд. Время работы - 2,5 минуты. Ну... долго ждать, давайте еще раз внимательно посмотрим🤓
Итерация 2 - вынесли приведение даты со временем к дате в самый конец:
Количество считанных строк - 46 млрд. Время работы - 1,5 минуты. Уже лучше, но можно ли еще быстрее?
Итерация 3 - вынесли приведение unix timestamp к дате со временем:
Количество считанных строк - 25 млн. Время работы - 6 секунд. Супер! Нам этом остановимся👍
В итоге мы сначала находим максимальные значения и только потом кастуем. Выигрыш во времени - в 25 раз.
🕒 Время и строки можно посмотреть в системной табличке
🐢 В первых двух случаях в плане запроса есть шаги:
🐆 В третьем:
👍
#sql_tips
Итерация 1:
SELECT
max(
if(
table_name LIKE 'offline%',
toDate(FROM_UNIXTIME(dateTime::INT)),
toDate(dateTime)
)
) AS max_date
FROM schema.source_table
Количество считанных строк - 46 млрд. Время работы - 2,5 минуты. Ну... долго ждать, давайте еще раз внимательно посмотрим
Итерация 2 - вынесли приведение даты со временем к дате в самый конец:
SELECT
toDate(
max(
if(
table_name LIKE 'offline%',
FROM_UNIXTIME(dateTime::INT),
dateTime
)
)
) AS max_date
FROM schema.source_table
Количество считанных строк - 46 млрд. Время работы - 1,5 минуты. Уже лучше, но можно ли еще быстрее?
Итерация 3 - вынесли приведение unix timestamp к дате со временем:
SELECT
toDate(
if(
table_name LIKE 'offline%',
FROM_UNIXTIME(max(dateTime)::INT),
max(dateTime)
)
) AS max_date
FROM schema.source_table
Количество считанных строк - 25 млн. Время работы - 6 секунд. Супер! Нам этом остановимся
В итоге мы сначала находим максимальные значения и только потом кастуем. Выигрыш во времени - в 25 раз.
system.query_log в столбцах query_duration_ms, read_rows.ReadFromMergeTree (schema.source_table) - читаем таблицуExpression ((Conversion before UNION + (Projection + Before ORDER BY))) - кастуем к дате в каждом подзапросеReadFromStorage (MergeTree(with Aggregate projection _minmax_count_projection)) - вот эта проекция сильно быстрее, чем скан всей таблицы, а лишних приведений уже нет. Profit#sql_tips
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10⚡4❤2💯1
Итак повторим. У нас несколько шкафов, внутри сервера (до 40 штук), а внутри серверов жесткие диски. Жесткие диски бывают HDD (как на слайде) и SSD. Все файлы в HDFS делятся на блоки.
HDD дешевле, но медленнее. SSD дороже, но быстрее. Принцип работы HDD похож на виниловую пластинку. Есть магнитные диски и есть специальная головка (красная на слайде). Она намагничивает на вращающийся магнитный диск магнитные дорожки. Так пишутся наши файлы. Эти магнитные сектора могут располагаться на разных дорожках. Поэтому головка диска постоянно бегает по дорожкам, читая или записывая тот или иной файл. Т.е. если головка будет читать один большой цельный файл, то очевидно бегать туда сюда она не будет. Она просто будет читать длинную длинную дорожку.
В SSD никаких вращающихся механизмов нет. Информация там хранится в специальных ячейках, которые заряжаются, если на них подать напряжение и разряжаются, если напряжение с них убрать. Есть заряд это 1, нет заряда это 0. Кстати SSD не очень любят перезапись. Дело в том, что ячейка памяти держит у себя заряд благодаря диэлектрику. А он с каждой перезаписью разрушается. Тем самым ячейка начинает хуже держать заряд и емкость SSD снижается. При этом скорость конечно моментальная благодаря внутреннему контроллеру. Он главный мозг и все знает про все ячейки.
Собственно какой размер блока должен быть в HDFS? Нам важно, чтобы чтение и запись шли как можно быстрее. Если размер блока будет слишком маленьким, то времени на чтение 1000 блоков уйдет больше, чем на чтение 10. Пока головка сменит положение, пока прочтет информацию. И так 1000 раз. Вместо того, чтобы 10 раз сменить положение и спокойно прочесть то, что нужно.
В мире люди опытным путем посчитали, что 128Мб, 256Мб являются оптимальными размерами для блоков. Я сейчас говорю на примере стандартного привычного CSV файлика. Это важно, так как более специфичные файлики формата parquet хранятся иначе. Но об этом в другой раз.
#hdfs
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍5💯2❤🔥1
Итак повторим. Файлы в HDFS хранятся распределенно на нескольких серверах. Файлы делятся на одинакового размера блоки. Чаще используют HDD диски.
Хорошо, размер блока установлен в 128Мб. Кстати вы можете задать размер при настройке HDFS в конфигурационном файле. Можно выставить ЛЮБОЕ число, хоть 100500Гб. Но как же будет делиться файл, если он весит 50Мб? Это же меньше размера блока.
БЛОК БУДЕТ размером 50Мб
Если файл меньше размера блока, то блок будет создаваться размером с файл. Если файл 1Кб, то создаться блок = 1Кб.
Если вы грузите 1000 разных файлов по 1Кб, то и будет 1000 блоков по килобайту.
Ок. А если файл 200Мб? Тогда первый блок будет 128Мб, а второй блок будет 72Мб.
Ок. А если файл 128.0005Мб? Тогда создаться блок 128.0005Мб. Если остается очень маленький хвостик, который меньше 1%, то он приклеивается к крайнему блоку.
К слову, задавать слишком большой размер блока нет смысла. Чаще мы читаем не весь файл целиком, а только его некоторую его часть. Поэтому 128Мб является оптимальным.
В HDFS существует также проблема мелких файлов, но об этом в следующих постах.
#hdfs
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👌5💯2
Важно! Если вы еще не знаете, что такое NameNode и проблема мелких файлов в HDFS, то смело пропускайте.
Я уже запланировал публикации своих постов, где об этом рассказываю. За февраль вы все догоните. Сейчас можете почитать, но в целом это будет бесполезно.
⬇️⬇️⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤1⚡1💯1
Forwarded from Время Валеры
Разбирал недавно код нескольких дата пайплайнов, в попытке понять почему же на них тратится так много денег
Ответ был найден быстро, проблему вызывала следующая строчка
df.coalesce(1).write.parquet
Соотвественно, машина арендовалась полностью, а использовалось только одно ядро/поток/воркер из как минимум 16 ( а то и 32 или 64 - зависит от типа инстанса). Вместо того чтобы выдать 16 файлов, выдавался один, но в 16 раз медленее. Для небольших файлов это проблема несущественная, для всего остального - серьезный косяк.
Так, многопоточность, в очередной раз спасла мир
Возможно я что-то упускаю и гнать все через 1 воркер это best practice?
Ответ был найден быстро, проблему вызывала следующая строчка
df.coalesce(1).write.parquet
Соотвественно, машина арендовалась полностью, а использовалось только одно ядро/поток/воркер из как минимум 16 ( а то и 32 или 64 - зависит от типа инстанса). Вместо того чтобы выдать 16 файлов, выдавался один, но в 16 раз медленее. Для небольших файлов это проблема несущественная, для всего остального - серьезный косяк.
Так, многопоточность, в очередной раз спасла мир
Возможно я что-то упускаю и гнать все через 1 воркер это best practice?
🔥4⚡2💯1