Spark ChiSqureSelector算法存在一些性能问题。
我实现了如下功能选择:
private JavaRDD<LabeledPoint> chiSqure(JavaRDD<LabeledPoint> orginalData, int k) {
ChiSqSelector selector = new ChiSqSelector(k);
transformer = selector.fit(orginalData.rdd());
return orginalData.map(lp -> new LabeledPoint(lp.label(), transformer.transform(lp.features())));
}
一切都很好,但对于每个尺寸为15k的8000个矢量(和numberOfTopFeatures = 14k参数),chiSquare模型拟合大约需要15分钟。
我需要将这个函数用于大约100k向量的原始数据大小,每个向量大约100k,所以我担心它会破坏性能。
我做错了吗? 如何提高ChiSquare模型拟合的性能?
我的测试环境参数 CPU:Intel Core 2 Duo 3.0 GHz, RAM:8 GB
答案 0 :(得分:0)
Spark的性能通常来自跨多台机器的运行,因此我不担心任何单机基准测试。总体而言,您的使用情况看起来很好。
答案 1 :(得分:0)
首先,您应该验证SparkConf的设置,然后验证SparkContext(设置#cores,executor和驱动程序内存)。其次,即使在一台机器上,您也可以使用Spark模拟集群。例如,看看here。