У меня проблема с приложением Spark.Вот упрощенная версия моего кода:
def main(args: Array[String]) {
// Initializing spark context
val sc = new SparkContext()
val nbExecutors = sc.getConf.getInt("spark.executor.instances", 3)
System.setProperty("spark.sql.shuffle.partitions", nbExecutors.toString)
// Getting files from TGZ archives
val archivesRDD: RDD[(String,PortableDataStream)] = utils.getFilesFromHDFSDirectory("/my/dir/*.tar.gz") // This returns an RDD of tuples containing (filename, inpustream)
val filesRDD: RDD[String] = archivesRDD.flatMap(tgzStream => {
logger.debug("Getting files from archive : "+tgzStream._1)
utils.getFilesFromTgzStream(tgzStream._2)
})
// We run the same process with 3 different "modes"
val modes = Seq("mode1", "mode2", "mode3")
// We cache the RDD before
val nb = filesRDD.cache().count()
logger.debug($nb + " files as input")
modes.map(mode => {
logger.debug("Processing files with mode : " + mode)
myProcessor.process(mode, filesRDD)
})
filesRDD.unpersist() // I tried with or without this
[...]
}
Сгенерированные журналы (например, с 3-мя архивами в качестве входных данных):
Получение файлов из архива: a
Получение файлов из архива: b
Получение файлов из архива: c
3 файла на входе
Обработка файлов в режиме: mode1
Получениефайлы из архива: a
Получение файлов из архива: b
Получение файлов из архива: c
Обработка файлов в режиме: mode2
Получение файлов изархив: a
Получение файлов из архива: b
Получение файлов из архива: c
Обработка файлов в режиме: mode3
Получение файлов из архива:a
Получение файлов из архива: b
Получение файлов из архива: c
Конфигурация My Spark:
- Версия: 1.6.2
- Исполнители: 20 x 2CPU x 8Go RAM
- Объем дополнительной памяти на одного исполнителя: 800Mo
- Драйвер: 1CPU x 8Go RAM
Из этих журналов я понимаю, что извлечение файлов выполняется 4 раза в экземпляре одного!Это, очевидно, приводит меня к проблемам с пространством кучи и к потере производительности ...
Я что-то не так делаю?
РЕДАКТИРОВАТЬ: Я также пытался использовать modes.foreach(...)
вместокарта, но ничего не изменилось ...