У меня есть модель PMML, которая была экспортирована из Python, и я использую ее в Spark для последующей обработки. Поскольку оценщик jpmml не сериализуем, я использую его внутри mapPartitions. Это работает нормально, но требует времени для завершения, так как mapPartition должен материализовать итератор и собрать/создать новый RDD. Мне интересно, есть ли более оптимальный способ выполнить Evaluator.
Я заметил, что когда Spark выполняет этот rdd, мой процессор недогружен (падает до ~ 30%). Также из SparkUI TaskTime (время GC) красного цвета на 53 с / 15 с.
JavaRDD<List<ClassifiedPojo>> classifiedRdd = toBeClassifiedRdd.mapPartitions( r -> {
// initialized JPMML evaluator
List<ClassifiedPojo> list;
while(r.hasNext()){
// classify
list.add(new ClassifiedPojo())
}
return list.iterator();
});