Có hai phương pháp để xuất mô hình Apache Spark sang định dạng dữ liệu PMML. Trước tiên, khi làm việc ở mức trừu tượng Spark ML, bạn có thể sử dụng thư viện JPMML-SparkML. Thứ hai, khi làm việc ở mức trừu tượng Spark MLlib, có vẻ như là trường hợp ở đây, thì bạn có thể sử dụng đặc điểm PMMLExportable
được tích hợp sẵn.
JPMML-SparkML truy xuất tên cột từ lược đồ dữ liệu Spark ML qua DataFrame#schema()
. Thật không may, không có tùy chọn như vậy cho Spark MLlib, do đó, tên tính năng "field_ {n}" và tên nhãn "target" chỉ đơn giản là các tên mã cứng giả.
Nó là khá dễ dàng để đổi tên trường trong tài liệu PMML sử dụng JPMML-Model thư viện:
pmmlExportable.toPMML("/tmp/raw-pmml-file")
org.dmg.pmml.PMML pmml = org.jpmml.model.JAXBUtil.unmarshal("/tmp/raw-pmml-file");
org.jpmml.model.visitors.FieldRenamer targetRenamer = new FieldRenamer(FieldName.create("target"), FieldRenamer.create("y"));
targetRenamer.applyTo(pmml);
org.jpmml.model.JAXBUtil.marshal(pmml, "/tmp/final-pmml-file");
Nếu bạn marshal trường hợp này đối tượng PMML vào một tập tin PMML, sau đó bạn có thể thấy rằng lĩnh vực này "mục tiêu" (và tất cả các tham chiếu của nó) đã được đổi tên thành "y". Lặp lại quy trình với các tính năng.