Spark MLlib:9570 列上的 PCA 花费的时间太长
Spark MLlib: PCA on 9570 columns takes too long
1) 我在 9570 列上做 PCA,在本地模式下给它 12288 mb RAM(这意味着只有驱动程序),它需要 1.5 到 2 小时。这是代码(非常简单):
System.out.println("level1\n");
VectorAssembler assemblerexp = new VectorAssembler()
.setInputCols(metincols)
.setOutputCol("intensity");
expoutput = assemblerexp.transform(expavgpeaks);
System.out.println("level2\n");
PCAModel pcaexp = new PCA()
.setInputCol("intensity")
.setOutputCol("pcaFeatures")
.setK(2)
.fit(expoutput);
System.out.println("level3\n");
所以打印level3所花费的时间就是它所花费的时间(1.5到2小时)。需要这么长时间是正常的吗?我尝试了不同的数字分区(2、4、6、8、50、500、10000),其中一些分区也花费了将近 2 小时,而对于其他分区,我得到了 Java 堆 space 错误。还有一些来自 Spark 用户界面的图片:
Executors Jobs Stages environment
2)每次PCA得到不同的结果也是正常的吗?
如果您以编程方式设置 RAM,它不会生效,正确的方法是提供 JVM 参数。
1) 我在 9570 列上做 PCA,在本地模式下给它 12288 mb RAM(这意味着只有驱动程序),它需要 1.5 到 2 小时。这是代码(非常简单):
System.out.println("level1\n");
VectorAssembler assemblerexp = new VectorAssembler()
.setInputCols(metincols)
.setOutputCol("intensity");
expoutput = assemblerexp.transform(expavgpeaks);
System.out.println("level2\n");
PCAModel pcaexp = new PCA()
.setInputCol("intensity")
.setOutputCol("pcaFeatures")
.setK(2)
.fit(expoutput);
System.out.println("level3\n");
所以打印level3所花费的时间就是它所花费的时间(1.5到2小时)。需要这么长时间是正常的吗?我尝试了不同的数字分区(2、4、6、8、50、500、10000),其中一些分区也花费了将近 2 小时,而对于其他分区,我得到了 Java 堆 space 错误。还有一些来自 Spark 用户界面的图片:
Executors Jobs Stages environment
2)每次PCA得到不同的结果也是正常的吗?
如果您以编程方式设置 RAM,它不会生效,正确的方法是提供 JVM 参数。