Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

Основы работы с RDD

Все темы Data Engineer

Что такое Transformations и Actions?

В Apache Spark RDD (Resilient Distributed Dataset), Transformations и Actions - это два основных типа операций:

  1. Transformations: Эти операции преобразуют один RDD в другой. Они являются ленивыми, то есть не выполняются немедленно, а создают новый RDD, который запоминает примененное к нему преобразование. Примеры Transformations включают map, filter, flatMap, groupBy, sortBy и т. д.

  2. Actions: Эти операции вычисляют результат на основе RDD и возвращают его в драйверскую программу или сохраняют его во внешнее хранилище данных. Они вызывают выполнение ленивых Transformations. Примеры Actions включают collect, count, reduce, saveAsTextFile, foreach и т. д.

Используя комбинацию Transformations и Actions, можно создавать сложные вычислительные пайплайны в Spark, работающие с распределенными данными.


Что такое ленивые вычисления?

Ленивые вычисления - это стратегия, при которой вычисления откладываются до тех пор, пока не понадобится результат. Вместо того чтобы немедленно вычислять значение выражения, оно сохраняется в виде отложенной инструкции или структуры данных. Это позволяет оптимизировать использование ресурсов, избегать избыточных вычислений и выполнение только необходимых операций. В контексте Apache Spark, например, Transformations являются ленивыми, что означает, что они не выполняются немедленно, а создают отложенный план выполнения, который будет активирован только при вызове Action.


В чём разница Narrow transformations и wide transformations?

Разница между узкими (Narrow) и широкими (Wide) трансформациями в Apache Spark заключается в их воздействии на данные и структуру выполнения задач.

  1. Narrow transformations (узкие трансформации):
    • Применяются к каждой партиции данных независимо.

    • Не требуют перемешивания данных между разными партициями.

    • Примеры: map(), filter(), flatMap().

    • Результат обработки каждой партиции остается в пределах одного исполнителя.

  2. Wide transformations (широкие трансформации):
    • Требуют перемешивания данных между разными партициями.

    • Могут вызывать перераспределение и сортировку данных.

    • Часто приводят к созданию новых партиций.

    • Примеры: groupByKey() и reduceByKey() могут требовать shuffle. reduce() является action, а не transformation.


Объясните, что такое RDD в Apache Spark и каковы его основные свойства?

RDD (Resilient Distributed Dataset) — это основная абстракция данных в Apache Spark. Это неизменяемая распределенная коллекция объектов, которая может быть обработана параллельно. Основные свойства RDD :

  1. Устойчивость ( Resilient ): RDD может восстанавливаться после сбоев благодаря DAG (Directed Acyclic Graph) вычислений.

  2. Распределенность ( Distributed ): RDD делится на множество партиций, которые распределены по кластерам.

  3. Неизменяемость ( Immutable ): После создания RDD нельзя изменить. Все трансформации создают новые RDD.

  4. Ленивость ( Lazy Evaluation ): Вычисления в RDD выполняются только при вызове действий (actions).


Как создать RDD из внешнего источника данных и преобразовать его?

RDD можно создать из различных внешних источников, таких как файлы HDFS, базы данных и другие. Пример создания RDD из текстового файла и его преобразования:

val sc = new SparkContext(conf)

// Создание RDD из текстового файла
val lines = sc.textFile("hdfs://path/to/file.txt")

// Преобразование RDD (например, фильтрация строк)
val filteredLines = lines.filter(line => line.contains("Spark"))

Чем отличается действие (action) от преобразования (transformation) в контексте RDD?

Разница между action и transformation в контексте RDD:

  • Transformation (Преобразование): Операция, которая принимает RDD и возвращает новый RDD. Примеры: map, filter, flatMap. Трансформации ленивы и не выполняются до вызова действия.

  • Action (Действие): Операция, которая запускает выполнение вычислений и возвращает результат (или побочные эффекты). Примеры: collect, count, saveAsTextFile. Действия вызывают выполнение всех зависимых трансформаций.

Эта страница была полезной?