Я пытаюсь загрузить файл, состоящий из одной строки, во всем файле нет новых линейных символов, поэтому технический размер одной строки равен размеру файла. Я попытался использовать приведенный ниже код для загрузки данных.
val data= spark.sparkContext.textFile("location")
data.count
Невозможно вернуть значение.
Пытался прочитать файл как строку со следующим кодом, пытаясь записать в коде Java.
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.Path
import org.apache.hadoop.fs.FileSystem
val inputPath = new Path("File")
val conf = spark.sparkContext.hadoopConfiguration
val fs = FileSystem.get(conf)
val inputStream = fs.open(inputPath)
import java.io.{BufferedReader, InputStreamReader}
val readLines = new BufferedReader(new InputStreamReader(inputStream)).readLine()
JVM закрывается со следующей ошибкой.
ava HotSpot (TM) Предупреждение о 64-разрядной виртуальной машине для 64-разрядного сервера: INFO: ошибка os :: commit_memory (0x00007fcb6ba00000, 2148532224, 0); error = «Не удается выделить память» (errno = 12)
Недостаточно памяти для продолжения среды выполнения Java.
При выделении собственной памяти (mmap) не удалось сопоставить 2148532224 байта для фиксации зарезервированной памяти.
Проблема в том, что целые данные находятся в одной строке, используйте \ n для идентификации новой записи (новой строки). Поскольку \ n пытается загрузить его в одну строку, возникает проблема с памятью
Я могу разделить эту длинную строку по длине, добавить символ новой строки для каждых 200 символов (0,200) первой строки. (200 400) - вторая строка.
Пример ввода
This is Achyuth This is ychyath This is Mansoor ... .... this line size is more than 4 gigs.
Выход
This is Achyuth
This is ychyath
This is Mansoor
.
.
.