Открытый вебинар «Data Build Tool для хранилища Amazon Redshift» 10.02.2020 в 20:00 | OTUS >
Курсы по нейросетям со скидкой до 30%
Курсы по нейросетям со скидкой до 30%
Выбрать курс
Проходил 10 февраля 2020 года в 20:00

Открытый вебинар
Data Build Tool для хранилища Amazon Redshift

Открытый вебинар онлайн

Рассматриваем построение моделей и зависимостей. Изучаем полную и инкрементальную загрузку, работу с вложенными (nested) JSON, макросы и шаблоны Jinja, автоматическое тестирование.
Преподаватель

Запись

О курсе

Инженер данных
129 000 ₽
5 месяцев
Начало 29 июня
  • Понимание ценности данных для бизнеса и архитектуры
  • Узнаете, как организовать хранение данных, познакомитесь с методами проектирования хранилищ
  • Сможете разрабатывать ETL процессы для выгрузки данных из внешних источников
  • Научитесь преобразовывать данные в пакетном и потоковом режимах
  • Узнаете что такое качество данных и как работать с метаданными
  • Изучите современные BI инструменты и научитесь создавать витрины данных

Для кого этот курс?

Программа курса
Модуль 1
Введение
Модуль 2
Источники данных
Модуль 3
DWH
Модуль 4
Data Lake
Модуль 5
Загрузка данных
Модуль 6
Запросы к данным и трансформация
Модуль 7
Предоставление данных для аналитики и машинного обучения
Модуль 8
DataOps
Модуль 9
Выпускной проект
Введение
Введение в профессию. Кто такой Инженер Данных. Какие задачи он решает. Архитектура систем.
Инженер данных. Архитектуры систем обработки данных.
познакомиться и обсудить правила работы и общения;
выяснить, кто такой инженер данных;
сформулировать задачи инженера данных и ожидания бизнеса.
29 июня, 20:00 — 21:30
Домашние задания: 1
ДЗ
Список навыков Data Engineer. Найти и изучить несколько ресурсов с вакансиями Data Engineer (hh.ru, работа.ру и др.).
Выписать требования к навыкам и опыту работы с продуктами и технологиями.
Обобщить.
Выбор технологий. Облачные технологии
выяснить что такое on-premise;
научиться использовать облачную инфраструктуру;
научиться понимать отличия от on-premise.
6 июля, 20:00 — 21:30
Docker
обсудить контейнеризацию;
рассмотреть компоненты Docker.
9 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Регистрация аккаунта в облаке. Создание VM. Установка Docker.. 1. Создайте аккаунт в Яндекс-Почте или используйте уже существующий (https://yandex.ru);
2. Подключите двухфакторную авторизацию для вашего аккаунта (https://yandex.ru/support/passport/authorization/twofa-on.html);
3. На главной странице Яндекс-облака (https://cloud.yandex.ru) нажмите кнопку «Подключиться»;
4. На стартовой странице вашей консоли (https://console.cloud.yandex.ru/) выберете пункт «Биллинг» (https://console.cloud.yandex.ru/billing);
5. На странице «Биллинг» выберете пункт «Список аккаунтов» и создайте новый платёжный аккаунт;
6. Перейдите в созданный платёжный аккаунт и в разделе «Обзор» нажмите кнопку «Активировать промокод» и введите полученный промокод;
7. Зайдите на дашборд каталога, выберете «Compute cloud» и нажмите «Создать ВМ»;
8. Создайте VM с Ubuntu версии не выше 20;
9. Добавьте SSH-ключ в форме конфигуратора виртуальной машины;
10. Запустите VM, подключитесь к ней и установите Docker Engine по инструкциям:
- https://docs.docker.com/engine/install/ubuntu/
- https://docs.docker.com/engine/install/linux-postinstall/
11. Запустить простой образ: docker run hello-world
12. Сделать снимок экрана и приложить в качестве результата выполнения задания.
Основы Kubernetes
13 июля, 20:00 — 21:30
Источники данных
Что это такое Хранилища Данных. Для чего используются. Как их проектировать и как с ними работать.
Основы баз данных
16 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Запуск PostgreSQL в Docker. Создание таблиц..
NoSQL. Key-Value
познакомиться с NoSQL: что это, предпосылки к появлению, особенности;
изучить отличия NoSQL от SQL-систем;
изучить классификацию NoSQL-систем: Key-Value, Wide-column, Document-oriented, Графовые (Graph).
20 июля, 20:00 — 21:30
NoSQL. Wide-column
познакомиться с Wide-column;
познакомиться с HBase;
познакомиться с Cassandra.
23 июля, 20:00 — 21:30
DWH
Что это такое Хранилища Данных. Для чего используются. Как их проектировать и как с ними работать.
Основы DWH
узнать, что такое DWH;
познакомится с подходами к проектированию.
27 июля, 20:00 — 21:30
Модели данных в DWH
знать различные модели DWH и их особенности.
30 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Проектирование DWH по модели Data Vault (по другому набору таблиц).
Greenplum
изучить архитектуру кластерных аналитических СУБД;
рассмотреть примеры реализации MPP-баз данных;
познакомиться с Greenplum.
3 августа, 20:00 — 21:30
ClickHouse
узнать, что такое ClickHouse и понять области его применения;
понять, как начать работу с ClickHouse и где искать ответы на свои вопросы;
ClickHouse в облаке.
6 августа, 20:00 — 21:30
Разбор ДЗ по модулям 2 и 3
разобрать решение домашних заданий во 2 и 3 модуле.
10 августа, 20:00 — 21:30
Data Lake
Основы Data Lake. Hadoop
познакомиться с технологиями хранения данных;
узнать, что такое Data Lake;
узнать, как строить Data Lake;
узнать историю Hadoop;
познакомиться с компонентами Hadoop.
13 августа, 20:00 — 21:30
Распределенные файловые системы
узнать зачем нужны распределённые файловые системы и познакомиться с их особенностями;
понять как устроена HDFS и научиться с ней работать;
познакомиться с объектными хранилищами на примере S3.
17 августа, 20:00 — 21:30
ELK
познакомиться с основными концепциями Elasticsearch;
рассмотреть возможности обработки данных с использованием Logstash.
20 августа, 20:00 — 21:30
ELK (практика)
разворачивать ELK;
тюнить Elasticsearch для prod окружений;
делать запросы в Kibana;
попрактиковаться.
24 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Анализ веб-логов с помощью ELK. https://github.com/Gorini4/elk_demo — в README репозитория содержится полная инструкция с подсказками.




1. Склонируйте репозиторий в директорию elk_demo.
2. Зайдите в эту директорию и разверните инфраструктуру, выполнив в терминале docker-compose up.
3. Отредактируйте файл clickstream.conf.
4. Загрузите данные веб-логов, выполнив команду ./load_data.sh.
5. Перейдите по адресу http://localhost:5601 и создайте отчет (dashboard), показывающий распределение запросов с разными кодами ответов (status_code) по времени.
Загрузка данных
Изучаем загрузку и обработку данных. Организация конвейеров обработки.
Загрузка данных
познакомиться с загрузкой данных;
узнать факторы, которые надо учитывать;
узнать особенности загрузки данных из разных источников.
3 сентября, 20:00 — 21:30
Apache Kafka
познакомиться с потоковой обработкой данных;
познакомиться с Kafka.
7 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Запуск Kafka в Docker.
Kafka Connect
10 сентября, 20:00 — 21:30
Apache Ni-Fi. Выгрузка данных из внешних систем
изучить классификацию источников для выбора правильного способа загрузки;
научиться загружать источники с помощью NiFi.
14 сентября, 20:00 — 21:30
Apache Airflow. Введение в автоматизацию пайплайнов и оркестрацию
научиться использовать оркестраторы для автоматизации процессов обработки данных;
написать DAG'и для создания сложных процессов обработки, состоящих из множества этапов.
17 сентября, 20:00 — 21:30
Apache Airflow. Сложные пайплайны
научиться строить более сложные пайплайны Airflow;
понять архитектуру Airflow и способы деплоя;
научиться выполнять базовые операции с AF: тестирование, бэкфилл.
21 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Подготовка и установка на расписание DAG выгрузки данных из источников. Часть из операций мы разбирали на занятии. При необходимости можно пересмотреть запись.




1) Создаем виртуальную машину с Apache Airflow 2.0 в Yandex Cloud.




2) Создаем «managed instance» PostgreSQL/ClickHouse/MySQL — по выбору в Yandex Cloud.
Создаем БД «analytics».




3) Добавляем наш psql в Connections через UI Airflow.




4) Выбираем один из 2-х API, с которым будем работать:
- Положение Международной Космической Станции на текущий момент времени (timestamp-latitude-longitude). Source:
http://api.open-notify.org/iss-now.json
- Курс BTC:
https://docs.coincap.io/#2a87f3d4-f61f-42d3-97e0-3a9afa41c73b

Тут нас интересует следующий endpoint: «api.coincap.io/v2/rates/bitcoin»




5) Создаем схему данных (таблицу в БД analytics) с названиями и типами полей, релевантными тому, что будем забирать из API.




6) Описываем DAG (программируем на Python) для получения данных с периодичностью 30 min.

Сам оператор для обращения к API можно выбрать любой.

Для простоты рекомендуется слать GET-запросы через python-библиотеку requests (`PythonOperator`), либо через bash (`BashOperator`) с помощью curl.




**Концептуальная схема DAG-a:** отправить запрос в API -> распарсить пришедший результат -> положить данные в БД (сделать insert в таблицу).




7) Кладем .py файл с DAG-ом в нужную директорию виртуалки с airflow.




8) Запускаем DAG тумблером в UI Airflow.




9) Отлаживаем DAG до работоспособного состояния.

В интерфейсе Airflow (облачный инстанс) есть информация о наборе успешно завершившихся DAG runs (темно-зеленые кружки) + в БД есть данные за >5 периодов времени.

В качестве проверки мы зайдем в ваш airflow webserver и отправим SQL-запрос в таблицу с данными.




10) Проверяем, что данные появились в БД.




11) Поздравляю, вы завершили ДЗ!
Запросы к данным и трансформация
Изучаем как формулировать запросу к данным, как проводить трансформации.
Аналитические запросы
понимать механику аналитических запросов;
манипулировать операторами GROUP BY, OVER, PARTITION BY;
знать техники оптимизации запросов.
24 сентября, 20:00 — 21:30
SQL в больших данных
понять зачем SQL для работы с Hadoop;
узнать, что такое Hive и как с ним работать.
28 сентября, 20:00 — 21:30
DBT
1 октября, 20:00 — 21:30
Apache Spark. Архитектура приложения
познакомиться со Spark;
узнать, как развернуть Spark, запускать задания и работать интерактивно.
5 октября, 20:00 — 21:30
Apache Spark. API
познакомиться со Spark API;
узнать, как оптимизировать приложения и решать проблемы.
8 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Сборка витрины на Spark. Инструкция:
1) Загрузить данные из [https://www.kaggle.com/datasets/AnalyzeBoston/crimes-in-boston](https://www.kaggle.com/datasets/AnalyzeBoston/crimes-in-boston).




2) Проверить данные на корректность, наличие дубликатов. Очистить.




3) Собрать витрину (агрегат по районам (поле district)) со следующими метриками:
- crimes_total — общее количество преступлений в этом районе;
- crimes_monthly — медиана числа преступлений в месяц в этом районе;
- frequent_crime_types — три самых частых crime_type за всю историю наблюдений в этом районе, объединенных через запятую с одним пробелом “, ” и расположенных в порядке убывания частоты;
- crime_type — первая часть NAME из таблицы offense_codes, разбитого по разделителю “-” (например, если NAME “BURGLARY-COMMERCIAL-ATTEMPT”, то crime_type “BURGLARY”);
- lat — широта координаты района, рассчитанная как среднее по всем широтам инцидентов;
- lng — долгота координаты района, рассчитанная как среднее по всем долготам инцидентов.




4) Сохранить витрину в один файл в формате .parquet в папке path/to/output_folder.

Подсказки:
- Функция percentile_approx может посчитать медиану.
- Конкретный месяц идентифицируется не только номером месяца, но и номером года.
- В справочнике кодов есть дубликаты. Нужно выбрать уникальные коды, взяв любое из названий.
Обработка потоковых данных
познакомиться с Dataflow Model;
рассмотреть паттерны проектирования потоковой обработки;
рассмотреть фреймворки потоковой обработки.
12 октября, 20:00 — 21:30
Предоставление данных для аналитики и машинного обучения
Управление данными. Качество данных. BI
Предоставление данных
познакомиться с Предоставлением данных;
рассмотреть потребности Аналитики и Машинного обучения;
узнать, как предоставлять данные для Аналитики и Машинного обучения;
рассмотреть Reverse ETL.
22 октября, 20:00 — 21:30
Data Quality. Управление качеством данных
получить представление о том, что такое качество данных;
выяснить как Data Quality влияет на выводы и принимаемые решения;
рассмотреть стратегии управления качеством данных.
26 октября, 20:00 — 21:30
Управление метаданными
научиться собирать метаданные в каталог данных.
29 октября, 20:00 — 21:30
Основы Business Intelligence
сформулировать назначение систем класса BI;
изучить принципы работы BI-инструментов и решаемые задачи;
провести обзор популярных BI-решений.
2 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Витрина + BI. 1. Установить Metabase
- Начало работы с интерфейсом командной строки
- Install: https://cloud.yandex.ru/docs/cli/quickstart#install
- Init profile: https://cloud.yandex.ru/docs/cli/quickstart#initialize




`yc config list` # check



- Подключиться к виртуальной машине Linux по SSH
- Создание пары ключей SSH: https://cloud.yandex.ru/docs/compute/operations/vm-connect/ssh#creating-ssh-keys






`ls ~/.ssh/id_rsa.pub # check`




- Создать виртуальную машину из публичного образа Linux https://cloud.yandex.ru/docs/compute/operations/vm-create/create-linux-vm
- проверьте путь до файла с публичным ключом




```
yc compute instance create \
--name airbyte-vm \
--ssh-key ~/.ssh/key.pub \
--create-boot-disk image-folder-id=standard-images,image-family=ubuntu-1804-lts,size=10,auto-delete=true \
--network-interface subnet-name=default-ru-central1-a,nat-ip-version=ipv4 \
--memory 2G \
--cores 2 \
--hostname airbyte-vm
```

1.


`yc compute instance list`




- Запишите публичный адрес ВМ – EXTERNAL IP

- Подключение к виртуальной машине
- https://cloud.yandex.ru/docs/compute/operations/vm-connect/ssh#vm-connect



ssh -L 3000:localhost:3000 -i ~/.ssh/key yc-user@178.154.202.230 <укажите свой EXTERNAL IP>





- If you get this:
- Permissions 0644 for '.../key.pub' are too open.
- It is required that your private key files are NOT accessible by others.
- Then change permissions: https://stackoverflow.com/questions/9270734/ssh-permissions-are-too-open-error




```
sudo chmod 600 ~/.ssh/key.pem
sudo chmod 600 ~/.ssh/key.pub
sudo chmod 755 ~/.ssh

```

- Install docker




```
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add --
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian buster stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudo usermod -a -G docker $USER

```

- Install docker-compose




```
sudo apt-get -y install wget
sudo wget https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m) -O /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

```

- Install Metabase




```
docker run -d -p 3000:3000 --name metabase metabase/metabase

```


- Done
- Access at http://localhost:3000/





2. Подключиться к источнику данных

- ClickHouse Playground: [https://clickhouse.tech/docs/en/getting-started/playground](https://clickhouse.tech/docs/en/getting-started/playground)
- [Supermarket sales](https://www.kaggle.com/datasets/aungpyaeap/supermarket-sales)
- Любой другой



3. Создать дашборд

- Нескольо видов визуализации (таблицы, графики, числа)
- Фильтры
- Блок с комментариями



4. Выслать скриншоты своего дашборда с комментариями
Развертывание BI-решения
изучить принципы и способы развертывания BI-инструментов;
рассмотреть вопрос конфигурации;
разобрать возможности BI-решений и сравнить наиболее популярные из них.
5 ноября, 20:00 — 21:30
DataOps
Data + DevOps = DataOps
DevOps практики. CI + CD
изучить основы DevOps-практик;
рассмотреть подходы к построению CI-CD pipelines применительно к аналитическим задачам;
продемонстрировать несколько инструментов: Jenkins, Github Actions.
9 ноября, 20:00 — 21:30
Мониторинг
рассмотреть инструменты мониторинга: Prometheus, Zabbix, Graphite, Grafana;
понять специфику мониторинга процессов обработки данных.
12 ноября, 20:00 — 21:30
Разбор ДЗ по модулям 4 и 5
разобрать решение домашних заданий во 4 и 5 модуле.
16 ноября, 20:00 — 21:30
Выпускной проект
Заключительный месяц курса посвящен проектной работе. Свой проект — это то, что интересно писать слушателю. То, что можно создать на основе знаний, полученных на курсе. При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.
Выбор темы и организация проектной работы
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом.
19 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Проектная работа. ## Курсовой проект. Постановка задачи и требования




### Что

В качестве курсового проекта необходимо придумать дизайн и архитектуру data-driven приложения в выбранной доменной области, а затем реализовать это приложение.
Работающее приложение должно быть представлено в качестве репозитория в GitHub.




### Как

- Описать архитектуру и бизнес-требования к приложению. Для разработки схем рекомендуется использовать draw.io. Описания и схема должны быть приложены к репозиторию.
- В приложении обязательно должен быть код, который решает следующие задачи:
- Создание схемы хранилища.
- Загрузка данных из внешних источников.
- Преобразования данных, формирование слоёв хранилища.
- Оркестрация загрузок и преобразований.
- Создание дашбордов, отчётов. Визуализация результатов.
Консультация по проектам и домашним заданиям
получить ответы на вопросы по проекту, ДЗ и по курсу.
3 декабря, 20:00 — 21:30
Защита проектных работ
защитить проект и получить рекомендации экспертов;
узнать, как получить сертификат об окончании курса, как взаимодействовать после окончания курса с OTUS и преподавателями, какие вакансии и позиции есть для выпускников (опционально - в России и за рубежом) и на какие компании стоит обратить внимание.
17 декабря, 20:00 — 21:30

Преподаватель

None