Материалы
Документация Spark: https://spark.apache.org/docs/2.3.0/sql-programming-guide.html
Форматы данных:
- Формат plain text storage - text, csv, tsv, с фиксированной длиной и другие текстовые форматы
- Формат sequence files: https://wiki.apache.org/hadoop/SequenceFile
- Формат данных parquet: https://parquet.apache.org/documentation/latest/
- Формат данных orc: https://orc.apache.org/specification/ORCv1/
- Формат данных avro: http://avro.apache.org/docs/current/spec.html
Проект: lession13.zip
Работа с Apache Spark
Установка
Дистрибутив Apache Spark можно скачать с официальной страницы: https://spark.apache.org/downloads.html.
Мы будем работать с версией 2.4.7 скомпилированной под Hadoop 2.7.
Нужно скачать дистрибутив и распаковать в директорию установки.
Работа с REPL (read-eval-print loop)
Запуск
В директории $SPARK_HOME/bin есть файл запуска Spark REPL
- spark-shell.cmd для запуска на ОС Windows
- spark-shell для запуска на *nix платформах
Особенности работы на Windows платформах
При запуска на Windows возникает ошибка
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
В принципе это не помешает запуска, однако, чтобы эмулировать работу с HDFS можно скачать эту утилиту и указать путь к ней.
WinUtils можно скачать по ссылке https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1
При запуске spark-shell.cmd должна быть установлена переменная окружения HADOOP_HOME на путь до директории где в папке bin лежат файлы winutils
set HADOOP_HOME=D:\Programs\Spark\hadoop\
Зависимости в REPL
С помощью настройки --jar можно передать список jar-файлов,нужных при работе с REPL. Например:
%SPARK_HOME%\bin\spark-shell --jar park-introduction-1.0.0-SNAPSHOT.jar
Примеры
scala> val rdd = sc.parallelize(1 to 100) rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:24
Минимальный проект на Spark
Код
object Minimal { def main(args: Array[String]) { val spark = SparkSession.builder.appName("Spark Application").getOrCreate() import spark.implicits._ (1 to 10).toDF.show spark.stop() } }
В зависимости проекта должны быть включены библиотеки spark-core и spark-sql
Запуск
set HADOOP_HOME=<path to bin/winutils.exe> set SPARK_HOME=<path to spark home> set MAIN_CLASS=Minimal %SPARK_HOME%\bin\spark-submit --class %MAIN_CLASS% --master local[2] your_jar.jar