СберУниверситет
Был у нас ДР Трайба и мы поехали на два дня в Сбер Университет! Это такой огромный кампус, в котором можно жить, заниматься спортом, учиться и проводить презентации. Каждому выделяют одноместный номер в отеле (в здании кампуса) со всеми удобствами. Плюс кормят просто шикарно. Помимо завтрака-обеда-ужина у вас еще кофе брейки, на которых можно нереально наесться и так)) На каких-то кофе-брейках я уже просто водичку пил)) настолько наелся.
Также у нас была вечеринка вечером, где также большой выбор напитков, фуршет и так далее. Короче полный фарш.
Вообще суть этих двух дней была в том, что команды представляют свои идеи и предлагают решения для других. Это может быть, как продукт для сотрудников, так и новый продукт для рынка. Что-то может быть продумано до мелочей, а что-то на уровне идеи
продолжение внизу
Был у нас ДР Трайба и мы поехали на два дня в Сбер Университет! Это такой огромный кампус, в котором можно жить, заниматься спортом, учиться и проводить презентации. Каждому выделяют одноместный номер в отеле (в здании кампуса) со всеми удобствами. Плюс кормят просто шикарно. Помимо завтрака-обеда-ужина у вас еще кофе брейки, на которых можно нереально наесться и так)) На каких-то кофе-брейках я уже просто водичку пил)) настолько наелся.
Также у нас была вечеринка вечером, где также большой выбор напитков, фуршет и так далее. Короче полный фарш.
Вообще суть этих двух дней была в том, что команды представляют свои идеи и предлагают решения для других. Это может быть, как продукт для сотрудников, так и новый продукт для рынка. Что-то может быть продумано до мелочей, а что-то на уровне идеи
🔥6❤2
Мне понравилось, хоть иногда были продукты, которые я честно не понимал, зачем они нужны. Ну не бывает идеального решения. Иногда какие-то технологии пишутся годами и просто так их не повторить. Плюс для меня это было впервые и здесь важно было понять цели трайба и вообще, что мы делаем.
Коротко о трайбе: мы занимаемся маркетингом. Сюда входит СММ, рекламы, таргет, контекст, сквозная аналитика и так далее. Данных просто куча и со всем этим надо грамотно справляться. И здесь есть свои трудности. В особенности с поиском новых рекламных площадок. Поэтому, все новые фишки и тренды, которые выходят в мире, мы сразу пробуем и тестим..
P.S.Кстати много през было, где использовали кандинского для картинок, а также другие нейронки для озвучки голоса или написания текста...
Коротко о трайбе: мы занимаемся маркетингом. Сюда входит СММ, рекламы, таргет, контекст, сквозная аналитика и так далее. Данных просто куча и со всем этим надо грамотно справляться. И здесь есть свои трудности. В особенности с поиском новых рекламных площадок. Поэтому, все новые фишки и тренды, которые выходят в мире, мы сразу пробуем и тестим..
P.S.Кстати много през было, где использовали кандинского для картинок, а также другие нейронки для озвучки голоса или написания текста...
❤4🔥2👏2
Сколько весит таблица?
Нам будут выделять свой собственный кластер, поэтому мы считаем «сколько вешать в граммах». Собственно, как узнать сколько весит таблица, партиция?
Я запускаю в Jupiter notebook:
После этого в Spark UI во вкладке Storage появится наша таблица. Можно будет даже проследить, как по мере её вычисления размер в Mb растет. Окончательный вес будет в конце.
Ну а df.count() в ноутбуке покажет количество строк. И не забываем потом чистить хеш unpersist().
Кто как узнает вес данных? Метод с SparkEstimator у меня не пошел - не смог подключить его.. 🤔
Нам будут выделять свой собственный кластер, поэтому мы считаем «сколько вешать в граммах». Собственно, как узнать сколько весит таблица, партиция?
Я запускаю в Jupiter notebook:
df.persist()
df.count()После этого в Spark UI во вкладке Storage появится наша таблица. Можно будет даже проследить, как по мере её вычисления размер в Mb растет. Окончательный вес будет в конце.
Ну а df.count() в ноутбуке покажет количество строк. И не забываем потом чистить хеш unpersist().
Кто как узнает вес данных? Метод с SparkEstimator у меня не пошел - не смог подключить его.. 🤔
❤3👀1
This media is not supported in your browser
VIEW IN TELEGRAM
😁4🔥2
❤2
Что значит разрабатывать витрины данных и как это выглядит?
Витрина данных - это просто собранная из других таблиц таблица для аналитиков или дата сатанистов. Представьте у вас есть табличка с id людей и их покупки в магазине. И еще есть табличка, где этот же id, но с названиями городов. И вот для аналитиков нужна витрина, где будут отображены только люди и их города, которые покупают исключительно черный хлеб. И нужно, чтобы эта витрина наполнялась каждый день новыми данными.
Ну вот вы и пишете скрипт, который будет за вас каждый день читать таблицы источники и собирать эту витрину только с определенными качествами.
В чем сложность: в таблицах источниках могут быть пустые значения, запакованные json в строках или по-разному записанные значения. Все это дата инженеру надо поймать и отформатировать. Плюс нужно сразу определить, правильно ли будет витрина писаться, с какой периодичностью и с какими полями. Можно дополнять бесконечно. Например витрина при сборке должна обращаться к уже существующей витрине и обновлять некоторые строки или писать новые, учитывая изменения. Вариантов миллион.
Сам скрипт main.py можно запускать в Jupyter notebook руками каждый день. А можно написать DAG в Airflow и это все будет грузиться автоматически само.
Витрина данных - это просто собранная из других таблиц таблица для аналитиков или дата сатанистов. Представьте у вас есть табличка с id людей и их покупки в магазине. И еще есть табличка, где этот же id, но с названиями городов. И вот для аналитиков нужна витрина, где будут отображены только люди и их города, которые покупают исключительно черный хлеб. И нужно, чтобы эта витрина наполнялась каждый день новыми данными.
Ну вот вы и пишете скрипт, который будет за вас каждый день читать таблицы источники и собирать эту витрину только с определенными качествами.
В чем сложность: в таблицах источниках могут быть пустые значения, запакованные json в строках или по-разному записанные значения. Все это дата инженеру надо поймать и отформатировать. Плюс нужно сразу определить, правильно ли будет витрина писаться, с какой периодичностью и с какими полями. Можно дополнять бесконечно. Например витрина при сборке должна обращаться к уже существующей витрине и обновлять некоторые строки или писать новые, учитывая изменения. Вариантов миллион.
Сам скрипт main.py можно запускать в Jupyter notebook руками каждый день. А можно написать DAG в Airflow и это все будет грузиться автоматически само.
👍13❤5🔥3
Я – Дата Инженер | Евгений Виндюков pinned «Что значит разрабатывать витрины данных и как это выглядит? Витрина данных - это просто собранная из других таблиц таблица для аналитиков или дата сатанистов. Представьте у вас есть табличка с id людей и их покупки в магазине. И еще есть табличка, где этот…»
Как этот Hadoop выглядит?
Вот внешне никак. Он вообще не на вашем компьютере установлен. Он на серверах. Хабуп это просто распределенное хранение и вычисление данных. Короче ваша таблица в 100гб делится на блоки в 128мб (размер можно ставить любой) и потом они раскидываются по разным сервакам, параллельно дублируясь дважды (количество репликаций можно менять).
НО! У хабупа есть YARN. Это веб интерфейс в котором можно отслеживать как происходят вычисления в реальном времени. Это просто менеджер ресурсов, который показывает сколько у вас машин, сколько памяти, какие приложения сейчас считают и насколько нагружена вся эта канетель.
Я всегда смотрю, как вычисляются мои таблички. Вижу прогресс, сколько загрузилось, а сколько осталось. Оч нужная штука, чтобы оценить насколько вам требуется увеличение мощности в случае, если начнете считать внезапно х2 таблиц.
Вот внешне никак. Он вообще не на вашем компьютере установлен. Он на серверах. Хабуп это просто распределенное хранение и вычисление данных. Короче ваша таблица в 100гб делится на блоки в 128мб (размер можно ставить любой) и потом они раскидываются по разным сервакам, параллельно дублируясь дважды (количество репликаций можно менять).
НО! У хабупа есть YARN. Это веб интерфейс в котором можно отслеживать как происходят вычисления в реальном времени. Это просто менеджер ресурсов, который показывает сколько у вас машин, сколько памяти, какие приложения сейчас считают и насколько нагружена вся эта канетель.
Я всегда смотрю, как вычисляются мои таблички. Вижу прогресс, сколько загрузилось, а сколько осталось. Оч нужная штука, чтобы оценить насколько вам требуется увеличение мощности в случае, если начнете считать внезапно х2 таблиц.
👍6❤4
Чем pandas отличается от spark?
Это обе библиотеки Python. Это тот же sql, только написанный больше питоновским языком. Здесь можно сохранять подзапросы или целые таблицы в переменные, как в питоне. И вместо того, чтобы писать огромную портянку на sql, которая сразу выполняет весь запрос, в Спарке и пандасе можно выполнять весь код хоть построчно. Только spark умеет работать с распределенными данными, а pandas нет (ну т.е. только в пределах вашего компа)
Вот пример кода:
Pyspark
Это обе библиотеки Python. Это тот же sql, только написанный больше питоновским языком. Здесь можно сохранять подзапросы или целые таблицы в переменные, как в питоне. И вместо того, чтобы писать огромную портянку на sql, которая сразу выполняет весь запрос, в Спарке и пандасе можно выполнять весь код хоть построчно. Только spark умеет работать с распределенными данными, а pandas нет (ну т.е. только в пределах вашего компа)
Вот пример кода:
Pyspark
spark = SparkSession.builder \
.appName("halltape_data") \
.getOrCreate()
df = spark.table("schema.table.csv")\
.select("column1", "column2")\
.where(F.col("salary") > 100000)
df.show()
Pandasdf = pd.read_csv("table.csv")
df_2= df[["column1", "column2", "salary"]]
df_final = df_2[df_2["salary"] > 100000]
df_final.head()
Выглядят они в целом одинаково. Но в spark есть настройка sparksession как видите. Она позволяет настроить количество памяти, процессоров и так далее при котором Спарк будет считать это всё на кластере. Здесь я её не прописывал, там много параметров. Просто имейте в виду. Рекомендую для практики писать sql запрос, потом переписывать его на pandas или на spark.👍12❤5
Я – Дата Инженер | Евгений Виндюков pinned «Чем pandas отличается от spark? Это обе библиотеки Python. Это тот же sql, только написанный больше питоновским языком. Здесь можно сохранять подзапросы или целые таблицы в переменные, как в питоне. И вместо того, чтобы писать огромную портянку на sql, которая…»
Нужны ли оконные функции?
Да. Если вы шарите за оконки в sql, то в spark или pandas освоить будет не проблема. Все аналогично. Оконные функции конечно вызывают страх и непонимание с первого раза, но не переживайте, я попробую вам объяснить.
Представьте, что в вашей прямоугольной таблице вы очерчиваете чуть меньше прямоугольник внутри (только ширина остается прежней). И только внутри этого окошка вы считаете например сумму или сортируете столбец. За пределы этого окошка ничего не выходит.
Оконная функция бьет вашу огромную таблицу на такие мелкие таблички(окна). И внутри каждого окна вычисляется то, что вам надо.
Например, если вам нужно посчитать нарастающий итог или пронумеровать в рамках одной группы, то здесь оконка будет самое то!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥3
Что такое вывести в прод?
Прод, он же продакшен или промышленный код. Есть работающий код, который лежит в гите на ветке master. На этом чистовом виде кода и запускаются витрины, приложения и чего там еще можно запускать. А ваши черновые варианты кода лежат на ветках feature (на самом деле ветку можно назвать и super_rap или nagibator777).
Короче когда вы уверенны в своем коде, что он работает как надо, то вы делаете pull request. Это тупо заявка на то, чтобы вашу ветку nagibator777 залили уже на master. Эту заявку принимает человек, который ответственен за master ветку. Либо это вы сами, если вы очень крутой сеньор помидор сенатор Палпатин.
Собственно он проверяет ваш код, пишет комментарий в местах, где ваш код отстой. И после всех правок, если все ок, то делается merge. Ваша ветка сливается в ветку master.
При этом все изменения и версии кода сохраняются в git. Это удобно, если нужно посмотреть, что было до этого.
Гит - это наш GitHub, либо GitLab, либо Bitbucket. Каждая компания использует свою тему.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7😁2👨💻2
Код писать недостаточно!
Вот вы пишите код, крутите таблички свои, но задаетесь ли вопросом:
«А для кого это делаете?»
«А нужна ли эта штука в целом?»
«А как ей будут пользоваться?»
Любые витрины данных или приложения имеют человека, который будет ими пользоваться. Может это даже вы сами или ваш коллега. И всегда есть тех задание. Вот выдуманный пример:
Сделать витрину данных, где будут продажи молочных продуктов, а также наименования банков, по которым люди оплачивали покупки во всех магазинах сети.
И вот здесь мы выходим за пределы знаний join или spark. Это вообще не имеет смысла, если мы в душе не знаем, откуда брать данные по банковским картам. Причем источник может быть еще и составным. И нельзя найти просто таблицу с картами и банком. Может нам сначала надо как раз и собрать этот источник. А таблицы огромные и широкие и быстро их не прощелкать. И столбцы называются как-нибудь «yup_amt». Это что?
Плюсом сложность добавляется, если у нас строки с вложенностью. Какой-нибудь json или список. Это надо еще распарсить.
А по какому полю соединять? А может нужно по двум ключам соединять? А может вообще anti join нужен?
Поэтому нужна грамотно и понятная расписанная документация, ибо без бутылки водки точно не разберешься. А если это сквозная аналитика по рекламе, то надо понимать, как работает CPA сеть, Яндекс Метрика. Иначе все превращается в обезличенный текст на питоне без смысла.
Документация пишется в Confluence. Это что-то типа GitHub, только там текст. Можно делать ссылки на главы, страницы. А также всевозможное форматирование, возможность рисовать схемки, как в draw.io.
И желательно, чтобы документация была написана для бабушки, чтобы экономило время на изучение и не долбить коллег с вопросами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤5🔥2🍌2