Я использую локальный режим Spark2.1 (local [4]) и пытаюсь вызвать sc.wholeTextFiles
для чтения набора данных news20 как RDD:
val rdd = sc.wholeTextFiles("~/20news-18828/*", 4)
val result = rdd.collect()
Набор данных загружается отсюда: http://qwone.com/%7Ejason/20Newsgroups/20news-18828.tar.gz и послераспаковывая его, в папке 20news-18828
будет 20 папок категорий.Для каждой подпапки будет около 900 небольших текстовых файлов и, таким образом, всего 18828 текстовых файлов.В настоящее время данные находятся на моей локальной машине, и, вероятно, в будущем я буду читать их из HDFS.
Моя проблема в том, что вызов rdd.collect()
выше очень медленный, что занимает около 90 секунд ... В противном случае, если яиспользуйте локальный API-интерфейс Java для чтения всех файлов в виде массива, а затем sc.parallelize then collect
, он почти сразу завершится.
Хотите знать, почему использование sc.wholeTextFiles
так медленно?Или что я делаю не так?Я просто не знаком со Spark, и любая помощь будет оценена!
Заранее большое спасибо!