Получи случайную криптовалюту за регистрацию!

Girl DataEng

Логотип телеграм канала @hadoopgirl — Girl DataEng G
Логотип телеграм канала @hadoopgirl — Girl DataEng
Адрес канала: @hadoopgirl
Категории: Технологии
Язык: Русский
Количество подписчиков: 771
Описание канала:

Сборник материалов по DE
Чат: @datalearn_community
Канал с мемами: @dataengmemes

Рейтинги и Отзывы

2.00

3 отзыва

Оценить канал hadoopgirl и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

0

3 звезд

1

2 звезд

1

1 звезд

1


Последние сообщения

2022-05-07 13:46:19


Есть и на ютубе
2.3K views10:46
Открыть/Комментировать
2022-05-07 13:42:26 Новый эпизод подкаста уже тут

В этом выпуске junior data engineer, автор канала Girl DataEng и создатель чата для начинающих дата инженеров DataYoungers Анна Строевская рассказывает о:
- проблемах курсов
- необходимом background
- mindmaps и способах работы над сложной задачей
- а также о менторах и community для новичков

#datacoffee #data #podcast #данные #подкаст

https://anchor.fm/data-coffee/episodes/47-S2E5--------community-e1i5ubm
1.4K views10:42
Открыть/Комментировать
2022-04-21 16:37:02
Друзья, всем привет. Знаю, что меня давно не было, но оттого очень благодарна, что вы не отписываетесь и ждете новых материалов от меня. Я это ценю

Однако пока постов нет, я стараюсь активно участвовать в различных мероприятиях ИТ-комьюнити. И сегодня я выступала на митапе от центра IT-развития СМАРТ, где рассказывала про Data Engineering для джунов. Про то, в чем в принципе заключается работа дата-инженера, как проходить собеседования, какие есть варианты развития; про софт и хард скиллы.

Кому давно было интересно не только читать меня, но и послушать, прикладываю запись трансляции. Она лежит на ютуб-канале "Центр IT-развития Смарт".

Буду рада вашим комментариям и обратной связи!

Многие из вас про них уже в курсе, но все равно поделюсь материалами, которые упомянула на митапе:
- Книга «Automatize boring stuff with Python» от Al Sweigart (2019)
- Курс Data Engineering от DataLearn
- Курсы Stepik (SQL, BigData)
- Sql-ex (тренажер)
- Книга «Learning SQL» от Alan Beaulieu 2020
2.1K views13:37
Открыть/Комментировать
2022-02-16 12:18:52 ​​#Spark #BigData #Python #PySpark

Наконец-то я вернулась!
Сегодня хочу поделиться с вами обзорной информацией про PySpark - интерфейс для Apache Spark в Python. Если вы еще не знакомы со Spark как технологией, можете почитать мой предыдущий пост. PySpark позволяет писать Spark-приложения с использованием API-интерфейсов Python и предоставляет оболочку для распределенной обработки больших данных. PySpark поддерживает большинство функций Spark, таких как Spark SQL, DataFrame, Streaming, MLlib (машинное обучение) и Spark Core.

PySpark взаимодействует со Spark через специальную библиотеку Py4J. Через нее программы Python обращаются к объектам Java в JVM, транслируя код Scala. Чтобы обеспечить большую совместимость со Scala, PySpark поддерживает функциональную парадигму программирования, тем самым позволяя лучше распараллеливать код.

Таким образом PySpark позволяет проводить параллельную обработку без необходимости использования каких-либо модулей Python для потоковой или многопроцессорной обработки.

Точкой входа для создания датафрейма Spark и использования функций SQL является SparkSession, в которой определяются параметры конфигурации (название приложения, кластерный менеджер, количество выделяемых ядер и памяти).

При перехода с Python на PySpark необходимо преобразовать локальный датафрейм Pandas в Spark Dataframe через Apache Arrow.

В целом, тем, кто работает с Pandas, не так сложно будет разобраться с PySpark, так как оба используют датафреймы и имеют схожие методы. Но есть существенное различие - в режиме выполнения. PySpark реализует lazy execution (ленивое выполнение), в то время как Pandas – eager execution (мгновенное выполнение). PySpark сохраняет всю последовательность необходимых операций и выполняет их лишь в том случае, когда данные понадобятся.

Что еще важно знать про PySpark?

Поддерживаются такие форматы данных, как CSV, JSON, ORC, Parquet.

PySpark может взаимодействовать с SQL и NoSQL базами данных.

В PySpark возможно создание пользовательской функции (UDF, User Defined Function), аналогичной функции Python. Но тут возникает и недостаток PySpark - происходит двойное преобразование данных между приложением и UDF, так как Python чуждый язык для JVM, на которой работает Spark, и UDF выполняется вне ее. Это сказывается на скорости работы UDF.

PySparkSQL служит для создания датафреймов и помимо встроенных функций и типов данных поддерживает:
- GroupedData (агрегационные методы, аналог GroupBy)
- DataFrameNaFunctions (методы обработки Nan значений)
- DataFrameStatFunctions (методы для статистической обработки данных)

Подводя итог, можно сказать, что PySpark - это отличная обертка для использования всего функционала Spark на Python, если вам ближе этот язык программирования. PySpark не так сложно изучить, если у вас уже есть бэкграунд с Pandas, что особенно полезно аналитикам данных, которые хотят освоить компетенции DE. Для простых и распространенных задач PySpark с учетом простоты синтаксиса Python является мощнейшим инструментом в руках любого специалиста по работе с данными. Тем не менее важно понимать указанные недостатки PySpark, особенно если вам требуется писать UDF. И если использование PySpark существенно сказывается на производительности, предпочтительнее все же выбирать Scala/Java для работы со Spark.
2.3K views09:18
Открыть/Комментировать
2022-02-04 17:00:54 ​​#Airflow #Executors #BigData
Автор: Алексей Мелолян

Предполагается, что вы знакомы с основами Apache Airflow, озвученными в посте, в ином случае настоятельно рекомендуем ознакомиться.

Executor - механизм, посредством которого Apache Airflow запускает экземпляры задач (Task). В один момент времени Airflow может использовать только один вид Executor’a.

Executor может быть стандартным или кастомным, конкретный вид Executor’a присваивается в файле airflow.cfg переменной executor.

Список встроенных локальных Executor’ов:

- Debug Executor
- Local Executor
- Sequential Executor

Executor’ы, запускаемые удаленно:

- Celery Executor
- CeleryKubernetes Executor
- Dask Executor
- Kubernetes Executor

Рассмотрим каждый из них:

Sequential Executor. Используется Airflow по умолчанию после установки, может запускать только одну задачу в один момент времени и, как следствие, совместим с SQLite. Подходит только для теста Airflow, для продакшена рекомендуется использовать другие виды Executor’ов.

Debug Executor. Аналог Sequential Executor, но используется соответственно для отладки DAG’ов. Позволяет запускать DAG’и из командной строки.

Local Executor. Единственный более-менее полноценный локальный Executor. Может запускать несколько задач одновременно, требует для работы полноценной БД (PostgreSQL, MySQL прости Господи). При низких нагрузках - неплохой вариант, однако, с ростом количества одновременно запущенных DAG’ов, начинает лагать. Также не позволяет перезапускать DAG с произвольного места при падении, для этого необходимы Executor’ы, запускаемые удаленно.

Celery Executor. Работает с помощью Celery - асинхронной очереди задач, которая управляет воркерами - экземплярами сервиса, в данном случае Airflow, которые уже исполняют задачи. Для использования требует бэкенда в виде брокера сообщений, например, RabbitMQ или Redis. Данный Executor уже легко используется в продакшене, позволяет масштабировать работу Airflow на несколько машин, таким образом увеличивает устойчивость сервиса.

Kubernetes Executor. Исходя из названия, работает с кластером k8s. Имеет смысл только если вы уже используете кластер k8s, позволяет эффективнее использовать ресурсы по сравнению с Celery, а за счет использования контейнеров разработка новых задач становится более гибкой.

CeleryKubernetes Executor. Используется, когда необходимо иметь как распределенную высокую нагрузку, управляемую Celery, так и изолированные среды, создаваемые k8s.

Dask Executor. Используется на кластерах Dask - библиотеки Python для параллельных вычислений. Используется мало, очереди не поддерживает.


tl;dr: Сразу после установки переключайтесь на Local Executor, подключайте БД. Если количество DAG’ов растет - поднимайте брокер сообщений и переключайтесь на Celery Executor. Поднимаете Airflow на кластере k8s - Kubernetes Executor ваш выбор.

Полезные ссылки:

https://airflow.apache.org/docs/apache-airflow/stable/index.html - документация Airflow

https://www.bigdataschool.ru/news/airflow - статьи по Airflow на русском

@ruairflow - русское комьюнити Airflow
1.9K views14:00
Открыть/Комментировать
2022-02-04 16:00:12 ​​Всем привет!
Я приболела, а потому посты выходят реже, чем мне бы хотелось. Но сейчас речь не об этом.

У нас тут сложилась определенная аудитория, а потому я решила давать возможность другим начинающим специалистам проявить свою экспертность. Сегодня будет пост от одного из них - Алексея, в прошлом бэкендера, а сейчас - начинающего дата инженера, уже имеющего опыт в работе с определенными технологиями. Именно своими знаниями он и будет делиться. А потому запасайтесь свободным временем!

Если среди вас есть еще желающие проявить себя и поделиться с аудиторией интересной информацией о мире биг даты - велком в мою личку.
1.5K views13:00
Открыть/Комментировать
2022-01-27 13:20:02 Girl DataEng pinned «​​Привет всем новеньким Для вашего удобства закрепляю пост с самыми главными хэштегами на канале: #SQL - хэштег с постами, посвященными SQL. Теория, функции, все-все, что мне кажется интересным и важным для запоминания. #Python - посты по питону. #Linux…»
10:20
Открыть/Комментировать
2022-01-27 13:19:56 ​​Привет всем новеньким
Для вашего удобства закрепляю пост с самыми главными хэштегами на канале:

#SQL - хэштег с постами, посвященными SQL. Теория, функции, все-все, что мне кажется интересным и важным для запоминания.

#Python - посты по питону.

#Linux - полезные команды и bash.

#BigData - инструменты биг даты, теория. Здесь много хэштегов внутри, можете искать по названиям технологий.

Также планируется хэштег #Scala для постов от моей внутренней скалистки.

И добро пожаловать! Буду рада любым комментариям и замечаниям. Спасибо, что вы со мной
1.6K views10:19
Открыть/Комментировать
2022-01-24 16:00:53 ​​#Spark #Streaming #BigData #Structured

Spark Structured Streaming - это масштабируемый и отказоустойчивый механизм потоковой обработки данных на основе движка SparkSQL (см. официальную документацию Spark). Движок Spark SQL заботится о том, чтобы поток данных обрабатывался постепенно и непрерывно, обновляя конечный результат по мере поступления новых потоковых данных.

По итогу мы можем работать со стандартным инструментарием SQL-запросов через DataFrame API или операции Scala в DataSet API, чем Spark Structured отличается от Spark Streaming. Ключевая идея структурированной потоковой передачи состоит в том, чтобы обрабатывать поток данных в режиме реального времени как таблицу, которая постоянно обновляется - добавляются новые записи.

Эта неограниченная по глубине таблица продолжает увеличиваться по мере поступления новых данных и непрерывно обрабатывается с помощью долго выполняющегося запроса. Результаты обработки записываются в выходную таблицу. Каждый интервал триггера (скажем, каждую секунду) к входной таблице добавляются новые строки, которые в конечном итоге обновляют таблицу результатов (выходную таблицу).

На вход Spark Structured Streaming принимает файлы или данные из Kafka. Вывод данных определяет то, что именно будет записано во внешнее хранилище. Существует несколько режимов в Spark Structured Streaming:

Режим добавления: во внешнее хранилище будут записаны только новые строки, добавленные в таблицу результатов с момента последнего триггера. Это применимо только к запросам, в которых не предполагается изменение существующих строк в таблице результатов.

Режим обновления: во внешнее хранилище будут записываться только те строки, которые были обновлены в таблице результатов с момента последнего триггера.

Полный режим: вся обновленная таблица результатов будет записана во внешнее хранилище. Storage Connector должен решить, как обрабатывать запись всей таблицы.

Какие же основные достоинства у этого механизма по сравнению с обычным Spark Streaming?

Мы используем DataFrame/DataSet вместо RDD, что обеспечивает более высокий уровень абстракции и позволяет гибко манипулировать данными, включая поддержку всех этапов оптимизации SQL-запросов

Начиная со Spark 2.3, в Spark Structured Streaming вместо микропакетной обработки поддерживается непрерывная, которая работает с минимальной задержкой (до 1 миллисекунды), что существенно ускоряет обработку данных.

Повысилась надежность и отказоустойчивость за счет условий восстановления после любой (!) ошибки - например, через воспроизводимость источника данных в случае сбоя.

Обработка времени события - времени, когда событие действительно (вне Spark) произошло. Это позволяет повысить точность вычислений и обработать события, которые пришли в Spark с опозданием.

Таким образом, для полноценной отказоустойчивой потоковой обработки, на мой взгляд, лучше использовать Spark Structured Streaming.
5.9K views13:00
Открыть/Комментировать
2022-01-23 17:14:26 ​​#AWS #Cloud #BigData #Не_техническое

Всем хорошего воскресенья, друзья! Завтра вас ждет обещанный мной пост про Spark Structured Streaming. А сейчас мне хотелось бы поделиться забавной историей, которая случилась на заре моего джунства.

Начитавшись канал Инжиниринг Данных, я решила изучить AWS. Для тех, кто не знает, это Amazon Web Services - лидер на рынке облачных вычислений. Недолго думая, я взяла пробный период и привязала свою карту, понимая, что перед окончанием пробного периода я ее отвяжу.

После изучения тарифов (за запросы, память и пр.), интерфейса и возможностей деплоя, я как-то подзабила и вернулась к более популярным в России технологиям. Для тех, опять же, кто не в курсе, в России, в отличие от всего остального мира, очень мало компаний пользуется облаками. Связано это с законом о персональных данных. Так что на тот момент знания AWS мне показались избыточными.

Однако каково же было мое удивление, когда на почту стали приходить чеки на оплату AWS с хоть и небольшими, но существенными для меня суммами в долларах. Запаниковав, я зашла в консоль AWS и попыталась разобраться, что произошло. Меня встретила задолженность в размере 16 долларов за уже прошедший месяц (т.е., не оплатить ее я не могла, т.к. она была за уже использованный ресурс). В панике побежав отвязывать карту, я увидела, что на Амазоне этой возможности нет. Натурально, привязав карту единожды, ты навечно попадаешь в кабалу лично Джеффу Безосу. Причем, не понимая, за какие конкретно услуги деньги списались, я могла обречь себя на ежемесячное списание средств.

Однако острый ум инженера пришел мне на помощь. Оказалось, что хоть удалить карту нельзя, но вот заменить карту на нерабочую очень просто. Таким образом, обнаружив брешь в хитрой системе Амазона, я смогла спасти себя от финансового рабства. Так что, джуны, когда вам говорят, что войти в IT легко, помните, что на пути вас может ожидать очень много опасностей...

p.s. к слову, тот платеж у меня все-таки списался, но в размере 16 рублей, хотя в AWS сумма явно указывалась в долларах. Магия да и только.

p.p.s. ситуация так меня шокировала, что мне еще некоторое время снилось, как злополучные 16 долларов уходят с моего счета прямиком в Пало-Альто.
1.1K views14:14
Открыть/Комментировать