# Apache Spark в мире BigData
Вводный курс
---
## Outline
---
* Лекция 1.
* Вводная часть
* Что будет, чего не будет
* Проблематика BigData
* HDFS
* MapReduce
* Spark: основные определения
* RDD
* Действия
* Преобразования
---
* Семинар 1.
* SparkCore, движущиеся части и абстракции
* Hello world
---
* Лекция 2.
* SparkSQL
* Семинар 2.
* Знакомство с API SparkSQL
---
* Лекция и семинар 3.
* Spark Streaming: обработка потоковых данных
* DStreams
* Structured Streaming
---
* Лекция и семинар 4.
* Машинное обучение на Spark
---
* Лекция 5.
* Практические вопросы
* Питонопроблемы: как жить в аду зависимостей
* Кластерные менеджеры
* Распределенный консенсус
* Multi-tenancy
---
* Семинар 5. Практические моменты
* Live-demo кластер
---
Disclaimer
---

---
Бэкграунд
* 3 года со Spark, работа с данными интернета:
* краулер
* логи
* машинное обучение (no MLLib)
* on-premises deployment
* большой фанат
* Python 90/10 Scala
* по-прежнему большой фанат
---
## Проблематика BigData
Volume Velocity Variety
---
#### Volume

---
#### Volume

---
#### Velocity

---
#### Variety
{%youtube N9fDIAflCMY %}
---
## Сортировка

---
#### Как обойти ограничения по памяти при сортировке?
---
#### Подсказка: merge sort
<!-- .element: class="fragment" data-fragment-index="1" -->
---
#### Что если данные не помещаются на один диск? На один сервер?
---

---
## MapReduce

---
## Знакомые задачи на MapReduce
SQL:
* SELECT
* SELECT WHERE
* SELECT avg()
* JOIN
* GROUP BY
---
## Знакомые задачи на MapReduce
Matrix multiplication!
---
## Знакомые задачи на MapReduce
Задачи на графах
---

---
# RDD
Resilient Distributed Dataset
---
Преобразования (*Transformations*)
* применить указанную функцию к каждому элементу раздела (`map`, `flatMap`) или ко всему разделу (`mapPartitions`)
* сагрегировать датасет (`groupBy`, `sortBy`)
* связать несколько RDD (`union`, `join`)
* изменить способ деления RDD (`repartition`, `partitionBy`)
---
Действия (*Actions*)
* запускают задачу
* используютая для материализации результатов (файлы, таблицы, объекты в памяти)
---
{"metaMigratedAt":"2023-06-15T07:06:21.776Z","metaMigratedFrom":"YAML","title":"Apache Spark в мире BigData","breaks":true,"robots":"noindex, nofollow","slideOptions":"{\"transitionSpeed\":\"fast\",\"transition\":\"slide\",\"theme\":\"white\",\"controls\":true,\"center\":true,\"loop\":true}","contributors":"[{\"id\":\"27faaaab-43e3-4c62-b56d-ed37e351a960\",\"add\":2983,\"del\":200}]"}