Курс на Stepik
Обложка курса «Apache Spark на Scala» на Stepik
800 ₽

Apache Spark на Scala 5.000

Открыть на
STEPIK.ORG

Практический курс по Apache Spark 3.5 на Scala для дата-инженеров: от архитектуры Spark и DataFrame API до Spark SQL, shuffle, join, Structured Streaming, оптимизации и итогового ETL-проекта.

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Apache Spark на Scala»Учеников на курсе 59
Сертификаты, выданные на курсе «Apache Spark на Scala»Сертификатов выдано 0
Отзывы о курсе «Apache Spark на Scala»Отзывов получено 1
Рейтинг курса «Apache Spark на Scala»Рейтинг курса 5.000
Уроки в курсе «Apache Spark на Scala»Количество уроков 130
Тесты в курсе «Apache Spark на Scala»Количество квизов 646
Время прохождения курса «Apache Spark на Scala»Время прохождения курса
Стоимость курса «Apache Spark на Scala»Стоимость курса 800 ₽
Обновления курса «Apache Spark на Scala»Обновления курса
Дата публикации курса «Apache Spark на Scala»Дата публикации курса
Последнее обновление курса «Apache Spark на Scala»Последнее обновление

Содержание курса

Разделы в курсе «Apache Spark на Scala» 20 разделов Уроки в курсе «Apache Spark на Scala» 130 уроков Тесты в курсе «Apache Spark на Scala» 646 тестов Время прохождения курса «Apache Spark на Scala» 2 ч. Последнее обновление курса «Apache Spark на Scala» обн. 14 июля 2026

1. Модуль 1. Большие данные и Apache Spark

7 уроков
Закрытый
1.1 О курсе: как проходить обучение и канал «Логово Дата-Инженера»
15
2
1м 37с
0
Закрытый
1.2 Проблема больших данных: почему один компьютер не справляется
3
2
-
0
Закрытый
1.3 От MapReduce и Hadoop к Spark: что изменил Spark
1
1
-
0
Закрытый
1.4 Архитектура Spark: Driver, Executors и Cluster Manager
1
1
-
0
Закрытый
1.5 Модель вычислений: распределённость, партиции, параллелизм
1
1
-
0
Закрытый
1.6 Экосистема Spark: SQL, Streaming, MLlib, GraphX
1
1
-
0
Закрытый
1.7 Ленивость и DAG: трансформации против действий — обзор
1
1
-
0

2. Модуль 2. Окружение и первое приложение

7 уроков
Закрытый
2.1 Установка Spark локально и зависимости от Java
1
1
-
0
Закрытый
2.2 spark-shell: интерактивная работа со Spark
1
1
-
0
Закрытый
2.3 SparkSession и SparkContext: точки входа
1
1
-
0
Закрытый
2.4 Первый sbt-проект со Spark и его зависимости
1
1
-
0
Закрытый
2.5 Запуск приложения локально в режиме local
1
1
-
0
Закрытый
2.6 Знакомство со Spark UI: что и где смотреть
1
1
-
0
Закрытый
2.7 Логи Spark: как читать и настраивать уровень
1
0
-
0

3. Модуль 3. RDD — фундамент Spark

7 уроков
Закрытый
3.1 Что такое RDD: неизменяемость, партиции, происхождение (lineage)
1
1
-
0
Закрытый
3.2 Создание RDD: parallelize и textFile
1
1
-
0
Закрытый
3.3 Трансформации RDD: map, filter, flatMap
1
1
-
0
Закрытый
3.4 Действия RDD: collect, count, take, reduce, foreach
1
0
-
0
Закрытый
3.5 Ленивость на практике: что и когда выполняется
1
1
-
0
Закрытый
3.6 Партиции RDD: что это такое и сколько их
1
1
-
0
Закрытый
3.7 Кэширование RDD: cache, persist и уровни хранения
1
1
-
0

4. Модуль 4. RDD глубже: пары ключ-значение

9 уроков
Закрытый
4.1 Pair RDD: создание и смысл пар ключ-значение
1
1
-
0
Закрытый
4.2 reduceByKey и groupByKey: почему первый предпочтительнее
1
1
-
0
Закрытый
4.3 aggregateByKey и combineByKey
1
0
-
0
Закрытый
4.4 Объединения на RDD: join и cogroup
0
0
-
0
Закрытый
4.5 sortByKey, keys, values и mapValues
0
0
-
0
Закрытый
4.6 Что такое shuffle и почему он дорогой
0
0
-
0
Закрытый
4.7 Broadcast-переменные
0
0
-
0
Закрытый
4.8 Аккумуляторы (accumulators)
0
0
-
0
Закрытый
4.9 Когда RDD всё ещё нужны, а когда выбрать DataFrame
0
0
-
0

5. Модуль 5. DataFrame и Spark SQL — основы

7 уроков
Закрытый
5.1 Зачем нужен DataFrame поверх RDD и что такое Catalyst
0
0
-
0
Закрытый
5.2 DataFrame, строка Row и схема StructType
0
0
-
0
Закрытый
5.3 Создание DataFrame из коллекций и из файлов
0
0
-
0
Закрытый
5.4 Осмотр данных: printSchema, show и описательная статистика
0
0
-
0
Закрытый
5.5 Задание схемы вручную и типы данных Spark SQL
0
0
-
0
Закрытый
5.6 Чтение CSV: опции header, inferSchema, разделители
0
0
-
0
Закрытый
5.7 Чтение JSON и вложенные структуры
0
0
-
0

6. Модуль 6. Операции с DataFrame: Column API

10 уроков
Закрытый
6.1 select и способы ссылаться на колонку: col, $, апострофы
0
0
-
0
Закрытый
6.2 Выражения над колонками: арифметика и псевдонимы alias
0
0
-
0
Закрытый
6.3 Фильтрация filter и where, логические условия
0
0
-
0
Закрытый
6.4 withColumn, withColumnRenamed и drop
0
0
-
0
Закрытый
6.5 Литералы lit и условные колонки when/otherwise
0
0
-
0
Закрытый
6.6 Строковые функции: concat, substring, lower, regexp и другие
0
0
-
0
Закрытый
6.7 Числовые функции и округление
0
0
-
0
Закрытый
6.8 Дата и время в Spark SQL
0
0
-
0
Закрытый
6.9 Обработка null: isNull, na.fill, na.drop, coalesce
0
0
-
0
Закрытый
6.10 distinct, dropDuplicates, sample и limit
0
0
-
0

7. Модуль 7. Агрегации и группировки

6 уроков
Закрытый
7.1 Агрегатные функции: count, sum, avg, min, max
0
0
-
0
Закрытый
7.2 groupBy и agg: несколько агрегатов сразу
0
0
-
0
Закрытый
7.3 Агрегация по всему DataFrame без группировки
0
0
-
0
Закрытый
7.4 collect_list, collect_set и именованные агрегаты
0
0
-
0
Закрытый
7.5 Сводные таблицы через pivot
0
0
-
0
Закрытый
7.6 Сортировка результатов: orderBy, asc/desc, nulls first/last
0
0
-
0

8. Модуль 8. Объединения данных (Joins)

6 уроков
Закрытый
8.1 Типы join: inner, left, right, full, semi, anti
0
0
-
0
Закрытый
8.2 Синтаксис join в DataFrame API
0
0
-
0
Закрытый
8.3 Дубликаты колонок после join и как их избежать
0
0
-
0
Закрытый
8.4 Broadcast join: ускоряем соединение с маленькой таблицей
0
0
-
0
Закрытый
8.5 Перекос данных (skew) при join и борьба с ним
0
0
-
0
Закрытый
8.6 Cross join и его опасности
0
0
-
0

9. Модуль 9. Spark SQL: язык запросов

6 уроков
Закрытый
9.1 Временные представления: createOrReplaceTempView
0
0
-
0
Закрытый
9.2 Запросы через spark.sql
0
0
-
0
Закрытый
9.3 SQL против DataFrame API: что и когда выбрать
0
0
-
0
Закрытый
9.4 Каталог Catalog, базы данных и таблицы
0
0
-
0
Закрытый
9.5 SQL-функции и выражения, функция expr
0
0
-
0
Закрытый
9.6 Подзапросы и обобщённые табличные выражения (CTE)
0
0
-
0

10. Модуль 10. Dataset и типобезопасность

6 уроков
Закрытый
10.1 Зачем нужен Dataset поверх DataFrame
0
0
-
0
Закрытый
10.2 Dataset[T], case-классы и Encoders
0
0
-
0
Закрытый
10.3 Типобезопасные операции: map, filter, flatMap на Dataset
0
0
-
0
Закрытый
10.4 DataFrame как Dataset[Row] и конвертация через .as[T]
0
0
-
0
Закрытый
10.5 groupByKey и типобезопасные агрегации
0
0
-
0
Закрытый
10.6 Цена типобезопасности: сериализация и производительность
0
0
-
0

11. Модуль 11. Источники данных и форматы

8 уроков
Закрытый
11.1 Единый API чтения и записи: format, option, save
0
0
-
0
Закрытый
11.2 Parquet: колоночный формат и почему он по умолчанию
0
0
-
0
Закрытый
11.3 ORC и сравнение форматов хранения
0
0
-
0
Закрытый
11.4 Режимы записи SaveMode: append, overwrite и другие
0
0
-
0
Закрытый
11.5 Партиционирование при записи (partitionBy)
0
0
-
0
Закрытый
11.6 Bucketing: предварительная раскладка по корзинам
0
0
-
0
Закрытый
11.7 JDBC: чтение и запись в реляционные базы данных
0
0
-
0
Закрытый
11.8 Чтение множества файлов и автоопределение партиций
0
0
-
0

12. Модуль 12. Оконные функции

6 уроков
Закрытый
12.1 Зачем нужны оконные функции. Идея Window
0
0
-
0
Закрытый
12.2 Window.partitionBy и orderBy
0
0
-
0
Закрытый
12.3 Ранжирование: row_number, rank, dense_rank
0
0
-
0
Закрытый
12.4 Агрегаты в окне: sum и avg поверх окна
0
0
-
0
Закрытый
12.5 Функции lag, lead, first, last
0
0
-
0
Закрытый
12.6 Рамки окна: rowsBetween и rangeBetween
0
0
-
0

13. Модуль 13. Сложные типы и пользовательские функции

6 уроков
Закрытый
13.1 Сложные типы: array, map и struct
0
0
-
0
Закрытый
13.2 Функции для массивов: explode, array_contains и другие
0
0
-
0
Закрытый
13.3 Функции высшего порядка в Spark SQL: transform, filter…
0
0
-
0
Закрытый
13.4 UDF: когда они нужны, регистрация и использование
0
0
-
0
Закрытый
13.5 Производительность UDF против встроенных функций
0
0
-
0
Закрытый
13.6 Типобезопасные агрегаторы UDAF (Aggregator)
0
0
-
0

14. Модуль 14. Внутреннее устройство и оптимизация

6 уроков
Закрытый
14.1 Catalyst: логический и физический планы запроса
0
0
-
0
Закрытый
14.2 Метод explain и чтение планов выполнения
0
0
-
0
Закрытый
14.3 Tungsten, кодогенерация и бинарное представление данных
0
0
-
0
Закрытый
14.4 Узкие и широкие зависимости, stages и tasks
0
0
-
0
Закрытый
14.5 Adaptive Query Execution (AQE)
0
0
-
0
Закрытый
14.6 Кэширование как инструмент оптимизации
0
0
-
0

15. Модуль 15. Тюнинг производительности

6 уроков
Закрытый
15.1 Партиции: repartition против coalesce
0
0
-
0
Закрытый
15.2 Число партиций shuffle: spark.sql.shuffle.partitions
0
0
-
0
Закрытый
15.3 Память executors, spill на диск и диагностика OOM
0
0
-
0
Закрытый
15.4 Борьба с перекосом данных: соль и broadcast
0
0
-
0
Закрытый
15.5 Сериализация Kryo, broadcast и лучшие практики
0
0
-
0
Закрытый
15.6 Чтение Spark UI для поиска узких мест
0
0
-
0

16. Модуль 16. Структурированный стриминг

8 уроков
Закрытый
16.1 Идея Structured Streaming: поток как бесконечная таблица
0
0
-
0
Закрытый
16.2 Источники: файлы, сокеты и Kafka
0
0
-
0
Закрытый
16.3 Режимы вывода: append, update, complete
0
0
-
0
Закрытый
16.4 Триггеры и микробатчи
0
0
-
0
Закрытый
16.5 Оконные агрегации по времени события
0
0
-
0
Закрытый
16.6 Watermark и обработка поздних данных
0
0
-
0
Закрытый
16.7 Состояние, checkpoint и отказоустойчивость
0
0
-
0
Закрытый
16.8 Запись в приёмники и foreachBatch
0
0
-
0

17. Модуль 17. Развёртывание и эксплуатация

6 уроков
Закрытый
17.1 spark-submit: ключи и режимы client и cluster
0
0
-
0
Закрытый
17.2 Менеджеры кластера: YARN, Kubernetes, Standalone — обзор
0
0
-
0
Закрытый
17.3 Конфигурация Spark и приоритеты настроек
0
0
-
0
Закрытый
17.4 Сборка приложения и доставка зависимостей на кластер
0
0
-
0
Закрытый
17.5 Мониторинг и логирование в проде. History Server
0
0
-
0
Закрытый
17.6 Отладка падений: типичные ошибки и как их читать
0
0
-
0

18. Модуль 18. Озёра данных и форматы таблиц

3 урока
Закрытый
18.1 Проблемы голого Parquet в озере данных
0
0
-
0
Закрытый
18.2 Delta Lake: ACID, time travel и операция MERGE
0
0
-
0
Закрытый
18.3 Apache Iceberg и Hudi: краткое сравнение
0
0
-
0

19. Модуль 19. Продакшн-практики и тестирование

5 уроков
Закрытый
19.1 Тестирование Spark-приложений: локальная сессия и фикстуры
0
0
-
0
Закрытый
19.2 Качество данных: проверки, ассерты и метрики
0
0
-
0
Закрытый
19.3 Идемпотентность и безопасные перезапуски пайплайнов
0
0
-
0
Закрытый
19.4 Организация кода Spark-проекта: конфиги и параметры
0
0
-
0
Закрытый
19.5 Антипаттерны и чек-лист код-ревью Spark
0
0
-
0

20. Модуль 20. Итоговый проект: end-to-end ETL

5 уроков
Закрытый
20.1 Постановка задачи: пакетный ETL-пайплайн
0
0
-
0
Закрытый
20.2 Слои данных: raw, cleansed, curated (архитектура медальон)
0
0
-
0
Закрытый
20.3 Реализация трансформаций и агрегаций
0
0
-
0
Закрытый
20.4 Тесты, запуск и оптимизация пайплайна
0
0
-
0
Закрытый
20.5 Дорожная карта сеньора дата-инженера: что дальше
0
0
-
0