Apache Spark

Проработать:

  1. Spark — Потрясающий веб-микрофреймворк для Java
  2. Евгений Борисов — Мифы о Spark, или Может ли пользоваться Spark обычный Java-разработчик
  3. Какие задачи решает big data
  4. Функции высшего порядка в Spark 3.1
  5. Интеграция Spark Streaming и Kafka
  6. Apache Spark: что там под капотом?
  7. Машинное обучение с Apache Cassandra и Apache Spark
  8. МИТАП: «Установка Apache Spark - это просто»_11 мая 2022г
  9. МИТАП "Apache Spark за 2 часа - для нетерпеливых"_20 апреля 2022г
  10. Different Types of Spark Join Strategies
  11. Spark RDD Operations-Transformation & Action with Example
  12. Что такое Apache Spark
  13. spark join strategies
  14. dataset vs dataframe spark
  15. База данных Фильмов

Что это

Apache Spark — фреймворк с открытым исходным кодом для реализации распределённой обработки неструктурированных и слабоструктурированных данных через параллельные вычисления на кластере, входящий в экосистему проектов Hadoop.

Spark состоит:

  1. SQL
  2. STREAMING DATA
  3. MACHINE LEARNING
  4. GRAPH ANALYTICS

RDD(Resilient Distributed Datasets)

RDD - основной базовая абстракция Spark, представляющая неизменный набор элементов, разделенных по узлам кластера, что позволяет выполнять параллельные вычисления.

Его можно получить из:

  1. Файла
  2. Памяти
  3. Другого RDD

SparkContext или JavaSparkContext(для JAVA) - место откуда мы получает RDD.

Пример конфигурации JavaSparkContext:

SparkConf conf = new SparkConf();
conf.setAppName("my spark application");
conf.setAppName("local[*]");
JavaSparkContext sc = new JavaSparkContext(conf);
        

DataFrame

DataFrame - состоит из RDD.

Datasets

Datasets - это типизированные DataFrame.

RDD Operations:

Transformations:

  1. map
  2. flatMap
  3. filter
  4. mapPartitions, mapPartitionsWithIndex
  5. sample
  6. union, intersection, join, cogroup, cartesian
  7. distinct
  8. reduceByKey, aggregateByKey, sortByKey
  9. pipe
  10. coalesce, repartition, repartitionAndSortWithinPartitions

Actions:

  1. reduce
  2. collect
  3. count, countByKey, countByValue
  4. first
  5. take, takeSample, takeOrdered
  6. saveAsTextFile, saveAsSequenceFile, saveAsObjectFile
  7. foreach

DataFrame Operations:

Shuffle

Spark shuffle - это операция перемешивания(перераспределения ) данных между Экзекютерами. Побочный эффект таких аналитических преобразований, как join(), groupBy(), orderBy(), reduceByKey(), union() и тд.

    Способы снижения отрицательного эффекта Shuffle-операций
  1. Сократить число экзекюторов(меньше обмена между машинами)
  2. Уменьши объем данных(сбрасывания лишних столбцов, фильтрация)

Примеры кода

Проверка колонки на максимальное значение(Date или Numeric)

.groupBy(col(AF.OfficeId)).agg(min(AF.Date))
        

Catalyst Optimizer

Catalyst Optimizer - оптимизатор для DataSet.

RDD - мы оптимизируем сами.