Spark有BisectingKMeansModel这个root
字段我想要它,但它没有曝光!我尝试通过反射得到它,但我得到了NoSuchFieldException
:
Field rootField = model.getClass().getDeclaredField("root");
rootField.setAccessible(true);
node = (ClusteringTreeNode) rootField.get(model);
我甚至尝试枚举字段:
for (Field f : model.getClass().getDeclaredFields()) {
System.out.println(f.getName());
}
但它没有列出。我不熟悉Scala,这里发生了什么?
答案 0 :(得分:0)
知道了 - root
字段在包装类上。
ClusteringTreeNode node;
try {
Field parentField = model.getClass()
.getDeclaredField("org$apache$spark$ml$clustering$BisectingKMeansModel$$parentModel");
parentField.setAccessible(true);
org.apache.spark.mllib.clustering.BisectingKMeansModel parentModel =
(org.apache.spark.mllib.clustering.BisectingKMeansModel) parentField.get(model);
Field rootField = parentModel.getClass().getDeclaredField("root");
rootField.setAccessible(true);
node = (ClusteringTreeNode) rootField.get(parentModel);
} catch (Exception e) {
e.printStackTrace();
return;
}
对于未来的googlers,至少在此问题得到修复之前:Spark BisectingKMeansModel层次结构树树形图