Apache Spark — фреймворк с открытым исходным кодом для реализации распределённой обработки неструктурированных и слабоструктурированных данных через параллельные вычисления на кластере, входящий в экосистему проектов Hadoop.
RDD - основной базовая абстракция Spark, представляющая неизменный набор элементов, разделенных по узлам кластера, что позволяет выполнять параллельные вычисления.
SparkContext или JavaSparkContext(для JAVA) - место откуда мы получает RDD.
Пример конфигурации JavaSparkContext:
SparkConf conf = new SparkConf();
conf.setAppName("my spark application");
conf.setAppName("local[*]");
JavaSparkContext sc = new JavaSparkContext(conf);
DataFrame - состоит из RDD.
Datasets - это типизированные DataFrame.
Имеет методы, которые работают аналогично с Stream API(Transformations - Intermediate, Actions - Terminal). Также как в JAVA Stream API если метод возвращает RDD то это Transformations иначе это Actions.
На Spark все Transformations методы выполняются на кластере и Actions на драйвере(тот кто отвечает за таксу и распределяет ее по кластеру).
Мы можем сохранять промежуточные операции методом Transformations persist(StorageLevel).
Spark shuffle - это операция перемешивания(перераспределения ) данных между Экзекютерами. Побочный эффект таких аналитических преобразований, как join(), groupBy(), orderBy(), reduceByKey(), union() и тд.
.groupBy(col(AF.OfficeId)).agg(min(AF.Date))
Catalyst Optimizer - оптимизатор для DataSet.
RDD - мы оптимизируем сами.