Spark - как оптимизировать объект Row для большого количества столбцов в RDD - PullRequest
0 голосов
/ 19 февраля 2019

Я работаю над преобразованием файла фиксированной длины в csv с помощью spark.

   val recs  = rdd.map(line => {

      convert_INPUT(line.getBytes())

    }


def convert_INPUT(record:Array[Byte] )=
  {

    val COL_1 = record.slice(0,0+16)
    val COL_2 = record.slice(16,16+1)
    val COL_3 = record.slice(17,17+3)
    val COL_ = record.slice(20,20+1)
    . . . . 
    . . . . 
    . . . . 
    val COL_1000 = record.slice(5200,5200+8)

    Row(COL_1,COl_2,COL_3......COL_1000)
}

recs.saveAsTextFile(outfile)

У меня есть RDD с объектом Row из 1000+ столбцов ... большинство из них - строковые и BigDecimal типы данных.Размер объекта ROW может быть приблизительно равен 5К.Для входного файла размером 1 ГБ достаточно ли большого размера строки, чтобы вызвать проблемы с производительностью?

Я заметил, что для обработки файла объемом 1 ГБ требуется почти 50 минут .. тогда как аналогичный СДР с меньшим количеством столбцов (<50), но размер 1 ГБ завершается быстро, т. Е. 3 минуты. </p>

Любая тонкая настройка доступна для 1000+ столбцов в объекте Row () или размером 5 КБ ?.Я что-то здесь пропускаю?

Вот сводка, напечатанная для 1000+ столбцов

19/02/19 09:56:53 INFO rpc.b: Summary of connection to localhost:50505: RpcStats [name=localhost:50505, lifetimeStats=PeriodicStats [startTimeMillis=1550584572436, numMessages=0, numErrors=730, sumServiceTimeNanos=0, minNanos=2147483647, maxNanos=-2147483648, avg=0, adj=0], periodicStats=PeriodicStats [startTimeMillis=1550584572436, numMessages=0, numErrors=730, sumServiceTimeNanos=0, minNanos=2147483647, maxNanos=-2147483648, avg=0, adj=0], jsonSummaryStats=PeriodicStats [startTimeMillis=1550584572436, numMessages=0, numErrors=730, sumServiceTimeNanos=0, minNanos=2147483647, maxNanos=-2147483648, avg=0, adj=0], runningAverageMillis=0]

Это для СДР с <50 столбцами, но размером 1 ГБ </p>

19/02/19 10:23:49 INFO rpc.b: Summary of connection to localhost:50505: RpcStats [name=localhost:50505, lifetimeStats=PeriodicStats [startTimeMillis=1550589540572, numMessages=0, numErrors=59, sumServiceTimeNanos=0, minNanos=2147483647, maxNanos=-2147483648, avg=0, adj=0], periodicStats=PeriodicStats [startTimeMillis=1550589540572, numMessages=0, numErrors=59, sumServiceTimeNanos=0, minNanos=2147483647, maxNanos=-2147483648, avg=0, adj=0], jsonSummaryStats=PeriodicStats [startTimeMillis=1550589540572, numMessages=0, numErrors=59, sumServiceTimeNanos=0, minNanos=2147483647, maxNanos=-2147483648, avg=0, adj=0], runningAverageMillis=0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...