Spark MLlib: PCA на 9570 столбцах занимает слишком много времени - PullRequest
0 голосов
/ 22 февраля 2019

1) Я делаю PCA на 9570 столбцах, предоставляя ему 12288 МБ ОЗУ в локальном режиме (что означает только драйвер), и это занимает от 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.Также некоторые фотографии из пользовательского интерфейса Spark:

Исполнители Работа Этапы среда

2) Также нормально, что я каждый раз получаю разные результаты с PCA?

1 Ответ

0 голосов
/ 15 марта 2019

Если вы устанавливаете ОЗУ программно, это не вступает в силу, и правильным способом было бы предоставить аргументы JVM.

...