В настоящее время я работаю над проектом Spark в Java, и у меня возникла проблема, что я не знаю, как ее решить. Я не знаком с различными методами соединения/объединения, поэтому я считаю, что одним из них является ответ.Spark (Java): Получить пар файлов/содержимого из списка имен файлов
В настоящее время я хочу ввести список имен файлов (или путей) и получить объект JavaPairRDD, состоящий из пар имен файлов/путей и текстового содержимого.
Я знаю, что я могу использовать стандартную Java для получения текстового содержимого и просто вводить список кортежей с именами файлов, но я чувствую, что это должен быть способ «искры».
Я также знаю, что есть метод wholeTextFile, но это только захватывает все в каталоге, и я не уверен, что это будет формат, который я получаю (например, я могу использовать Amazon S3, и я не уверен, могу ли я сделайте предположение о каталоге там).
Кроме того, я знаю, что я могу распараллелить каждый файл отдельно в цикле, но как я могу объединить их вместе?
docs = //List<String> of document filenames
JavaRDD<String> documents = sc.parallelize(docs);
JavaPairRDD<String, String> = documents.???
Заранее спасибо.
Редактировать: У меня возникает соблазн создать JavaPairRDD <Filename, JavaRDD<String> filecontents>
, но я не уверен, как исходить оттуда. Я также опасаюсь этого, потому что это звучит неправильно (т. Е. Я как-то переопределяю параллелизм?).
Я знаю, что у меня может быть Spark создать объект JavaRDD из каждого документа, преобразовать их в объекты списка, а затем прокормить их в виде кортежей, но есть ли специальный способ Spark?
Редактировать 2 По-видимому, я неправильно понял, как текстовые файлы загружаются в объект JavaRDD. Они не загружают всю строку в виде одного объекта, они разбиваются по строкам. Это заставляет меня переосмыслить мой подход, поскольку мне действительно нужны вещи, чтобы разбить линии по разным причинам. Поэтому я думаю, что мне нужно пойти с «хакерским» подходом к использованию искры, чтобы загрузить файл, а затем преобразовать его обратно в список. Тем не менее, я оставлю вопрос на случай, если у кого-то есть умное решение для этого.
Мне пришлось переключиться обратно, у целыхTextFiles() есть проблемы с Amazon S3. –