Я реализовал код для оценки по предоставленному файлу PMML и файлу данных CSV (линейная регрессия) с использованием Spark и Java. Для этого я использовал артефакты maven jpmml -valuator-spark и spark-mllib_2.11, и он отлично работает.
Теперь я смотрю на замену библиотеки jpmml -valuator-spark, лицензированной AGPL. что-то подобное может быть включено в org-apache-spark (или любой другой вариант с полностью открытым исходным кодом). Я не вижу оценщиков для оценки по PMML, доступному в группе зависимостей org.apache.spark. Пожалуйста, подтвердите, если это правильно, и предложите какую-нибудь альтернативу.
https://github.com/jpmml/jpmml-evaluator-spark
Это библиотека оценщика PMML для кластерной вычислительной системы Apache Spark (http://spark.apache.org/) и AGPL.
Также обратитесь к: http://spark.apache.org/docs/latest/ml-guide.html Они предполагают, что все, что упаковано вместе с Apache Spark, включает в себя алгоритмы, создание и обучение модели, но оценка по модели здесь недоступна и ее зависимости включены только в jpmml-Asseattor-Spark.
import org.apache.spark.ml.Transformer;
import org.apache.spark.sql.Dataset;
import org.jpmml.evaluator.Evaluator;
import org.jpmml.evaluator.EvaluatorBuilder;
import org.jpmml.evaluator.LoadingModelEvaluatorBuilder;
import org.jpmml.evaluator.spark.TransformerBuilder;
...
...
...
EvaluatorBuilder evaluatorBuilder = new LoadingModelEvaluatorBuilder().setLocatable(false)
.setVisitors(new DefaultVisitorBattery()).load(pmmlInputStream);
Evaluator evaluator = evaluatorBuilder.build();
evaluator.verify();
TransformerBuilder pmmlTransformerBuilder = new TransformerBuilder(evaluator).withLabelCol("Predicted_SpeciesCategory").exploded(true);
Transformer pmmlTransformer = pmmlTransformerBuilder.build();
Dataset<?> resultDataset = pmmlTransformer.transform(csvDataset);
...
...
Зависимости Maven:
<dependency>
<groupId>org.jpmml</groupId>
<artifactId>jpmml-evaluator-spark</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.4.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.11</artifactId>
<version>2.4.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jpmml</groupId>
<artifactId>jpmml-sparkml</artifactId>
<version>1.5.4</version>
</dependency>
Этот код по-прежнему зависит от библиотеки org.jpmml, которую я хочу удалить. Ищете альтернативу с использованием библиотеки org.apache.sparkдобиться аналогичных результатов.