Как разделить входные данные и загрузить их в RDD
У меня есть терабайты данных для обработки с использованием Apache Spark. Я использую код sparkContext.binaryFiles(folderpath)
загрузить все данные из папки. Я думаю, что он загружает полные данные в RDD и вызывает ошибку OutOfMemory.
Как разделить данные объемом 1 ТБ на 250 ГБ и загрузить их в СДР?
1 ответ
К несчастью, binaryFiles
загружает каждый файл как одну запись в RDD. Я предполагаю, что у вас есть все данные в одном файле или только пару из них.
По сути, у вас есть два варианта:
- Разделите файлы на более мелкие, если это возможно (фактический метод зависит от формата данных)
- Воплощать в жизнь
InputFormat
который понимает ваш формат данных (или ищет тот, который делает это уже) и правильно устанавливает количество разделений. Затем вы можете использоватьsparkContext.hadoopFile()
способ передать ваш формат ввода.