0Pricing
Scala for Backend Engineering & Functional Programming · Урок

RDD и DataFrames

Абстракции данных Spark

«RDD и DataFrames» — бесплатный урок Scala for Backend Engineering & Functional Programming на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Scala for Backend Engineering & Functional Programming, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Scala for Backend Engineering & Functional Programming содержит 4 уроков всего.

Что такое Apache Spark?

Apache Spark — это распределённый движок для обработки данных в больших масштабах. Он разделяет данные между узлами кластера и выполняет вычисления параллельно. Scala — нативный язык Spark, обеспечивающий лаконичный API с учётом типов.

RDD

Отказоустойчивый распределённый набор данных (RDD) — низкоуровневая абстракция Spark: неизменяемая секционированная коллекция, которую можно обрабатывать параллельно и восстанавливать по истории преобразований при отказе узла.

SparkContext и SparkSession

Точкой входа в Spark служит SparkSession. Его sparkContext создаёт RDD, а сама сессия создаёт DataFrame и выполняет SQL.

import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder()
  .appName("Demo")
  .master("local[*]")
  .getOrCreate()

Создание RDD

Создайте RDD, распараллелив локальную коллекцию или прочитав файл. Каждая секция обрабатывается отдельной задачей.

val sc = spark.sparkContext
val numbers = sc.parallelize(Seq(1, 2, 3, 4, 5))
val lines   = sc.textFile("data.txt")

DataFrame

DataFrame — это распределённая таблица с именованными типизированными столбцами, подобная RDD строк вместе со схемой. Оптимизатор Catalyst может строить план и оптимизировать запросы к DataFrame.

Создание DataFrame

Создавайте DataFrame из коллекций с помощью toDF или считывайте их из структурированных файлов, таких как CSV, JSON или Parquet.

import spark.implicits._

val df = Seq(("Alice", 30), ("Bob", 25)).toDF("name", "age")
val csv = spark.read.option("header", "true").csv("people.csv")

Просмотр DataFrame

Используйте show для вывода строк, printSchema для просмотра типов столбцов и count для подсчёта строк.

df.printSchema()
df.show()
println(df.count())

Наборы данных и безопасность типов

Dataset — это типизированный DataFrame: Dataset[T], где T — класс-образец. Он сочетает оптимизацию DataFrame с проверкой типов во время компиляции.

import spark.implicits._

case class Person(name: String, age: Int)
val ds = Seq(Person("Alice", 30)).toDS()

RDD, DataFrame или Dataset

Выбирайте абстракцию в зависимости от задачи:

  • RDD — полный контроль, отсутствие схемы и оптимизатора
  • DataFrame — схема и оптимизация Catalyst, нетипизированные строки
  • Dataset — схема, оптимизация и безопасность типов

Преобразование между ними

Преобразуйте DataFrame в RDD с помощью .rdd, а RDD классов-образцов — в DataFrame с помощью .toDF. Dataset также преобразуется в DataFrame с помощью .toDF.

val rdd = df.rdd          // DataFrame -> RDD[Row]
val back = ds.toDF()      // Dataset -> DataFrame

Коллекция Scala

Концептуально DataFrame ведёт себя как распределённая коллекция Scala. Для наглядности рассмотрим локальный автономный аналог.

object Main {
  case class Person(name: String, age: Int)
  def main(args: Array[String]): Unit = {
    val people = Seq(Person("Alice", 30), Person("Bob", 25))
    people.foreach(p => println(s"${p.name}: ${p.age}"))
  }
}

Быстрая проверка

Какая абстракция предоставляет схему, оптимизацию Catalyst и безопасность типов во время компиляции?

Итоги

Вы познакомились с абстракциями данных Spark:

  • SparkSession как точка входа
  • RDD — низкоуровневая распределённая коллекция
  • DataFrame — распределённая таблица со схемой
  • Dataset — типизированный DataFrame

Далее: преобразования и действия.

Часто задаваемые вопросы

Урок «RDD и DataFrames» бесплатный?

Да — полный текст урока «RDD и DataFrames» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Scala for Backend Engineering & Functional Programming, подпишись на CoddyKit PRO. Курс Scala for Backend Engineering & Functional Programming содержит 4 уроков всего.

Чему я научусь в уроке «RDD и DataFrames»?

Абстракции данных Spark Ты практикуешь Scala for Backend Engineering & Functional Programming с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Scala for Backend Engineering & Functional Programming?

Предыдущий опыт не требуется. Scala for Backend Engineering & Functional Programming на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «RDD и DataFrames»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Scala for Backend Engineering & Functional Programming?

Да. Каждый урок Scala for Backend Engineering & Functional Programming включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. RDD и DataFrames
  2. Преобразования и действия
  3. Spark SQL
  4. Агрегации
← Назад к Scala for Backend Engineering & Functional Programming