Размер запрашиваемого массива превышает ограничение виртуальной машины в Spark Executors - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть один каталог с несколькими файлами журналов. Я должен анализировать файлы журналов по имени файла. Итак, первый подход, который мы сделали, - это создание целого текстового файла для параллелизации моих данных, как показано ниже

Теперь, когда я передаю содержимое файла в отдельный анализатор для анализа файлов журнала. Я получаю ошибку как java .lang. OutOfMemoryError: Запрашиваемый размер массива превышает ограничение виртуальной машины для файлов с данными более 700 МБ

Режим Spark Deploy - Память драйвера кластера-20 ГБ Память исполнителя-16 ГБ

 val fileRDD = spark.sparkContext.wholeTextFiles(logBundle.path.trim)

 fileRDD.map(tupleOfFileAndContent =>parseLog(tupleOfFileAndContent._2))


  def parseLog(logfilecontent: String): List[Map[String, String]] = {
        val txt = new Scanner(logfilecontent)
        var linNum = 1
        val logEntries = new ListBuffer[Map[String, String]]()
        while (txt.hasNextLine) {
          val line = txt.nextLine()
          var logEntry = Map[String, String]()
          if (line.startsWith("    EVENT SENDING:")){
            logEntry += ("line_number" -> linNum.toString)
            logEntry += ("event_sending" -> ( line.splitAt(18)._2.trim))
            logEntries += logEntry

          }
          linNum += 1
        }
        logEntries.toList
      }


...