Я работаю над преобразованием файла фиксированной длины в 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]