Будут ли небольшие файлы распространяться по разделам в JavaPairRDD? - PullRequest
0 голосов
/ 24 февраля 2019

Это может быть глупый вопрос, но я не могу понять, как файлы распределяются по разделам.Мое требование состоит в том, чтобы прочитать 10000 двоичных файлов (постоянный файл фильтра Блума) из местоположения Hdfs и обработать двоичные файлы отдельно, преобразовав данные в ByteArrayInputStream.Следует отметить, что эти файлы являются постоянными файлами фильтра Блума и должны считываться последовательно от начала файла до конца и должны быть преобразованы в массив байтов, таким образом, этот массив байтов будет использоваться для реструктуризации объекта Bloomfilter.

JavaPairRDD<String, PortableDataStream> rdd = sparkContext.binaryFiles(commaSeparatedfilePaths);

rdd.map(new Function<Tuple2<String, PortableDataStream>, BloomCheckResponse>()

Здесь, в коде, я получаю v1._1 как Filepath и v1._2 PortableDataStream, который будет преобразован в ByteArrayInputStream.Каждый двоичный файл имеет 34 МБ.Теперь возникает вопрос, будет ли возникать ситуация, когда часть файла будет находиться в одном разделе, а другая - в другом?Или все время, пока я обрабатываю, получу ли я все содержимое файла, сопоставленное с его файлом в одном разделе и не разделенное на части?Память исполнителя = 4 ГБ, а ядер = 2 и исполнителей - 180. По сути, ожидается, что файл должен читаться так, как он есть, от начала до конца без разделения.

1 Ответ

0 голосов
/ 24 февраля 2019

Каждый (file, stream) гарантирует полное содержание file в stream.Не бывает случаев, когда данные будут разделены между несколькими парами, не говоря уже о нескольких разделах.

Вы можете безопасно использовать его для предполагаемого сценария.

...