В момента работя върху проект на Spark в Java и се натъкнах на проблем, който не съм сигурен как да разреша. Не съм запознат с различните методи за присъединяване/обединение, така че смятам, че един от тях е отговорът.
В момента искам да въведа списък с имена на файлове (или пътища) и да получа JavaPairRDD обект, състоящ се от двойки имена на файлове/пътища и текстово съдържание.
Знам, че мога да използвам стандартна Java, за да получа текстовото съдържание и просто да въведа списък с кортежи име на файл-съдържание, но смятам, че трябва да има "Spark" начин за това.
Също така знам, че има метод 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 обект от всеки документ, да ги конвертира в List обекти и след това да ги въведе като кортежи, но има ли специфичен за Spark начин да се направи това?
Редактиране 2 Очевидно съм разбрал погрешно как текстовите файлове се зареждат в JavaRDD обект. Те не зареждат целия низ като един обект, те го разделят по ред. Това ме кара да преосмисля подхода си, тъй като имам нужда нещата да се разделят по различни причини. Така че мисля, че трябва да използвам "хакерския" подход на използване на spark за зареждане на файла и след това да го конвертирам обратно в списък. Въпреки това ще оставя въпроса, в случай че някой има умно решение за това.