Запуск pyspark с AWS EMR дает разные результаты для разного количества рабочих узлов - PullRequest
0 голосов
/ 26 ноября 2018

Я реализовал распределенную версию K-режимов с использованием pyspark со страницы GitHub (https://github.com/ThinkBigAnalytics/pyspark-distributed-kmodes). Алгоритм после реализации точно следовал методу, описанному в этой статье. (http://www.ijerd.com/paper/vol11-issue3/Version_1/J1137989.pdf)

Вкратце, чтоЯ сначала выбрал случайно выбранные кластеры в каждом разделе, а затем сделал Kmodes в каждом разделе. После этого я запустил локальные Kmodes в главном узле для этих центрированных кластеров из каждого раздела, чтобы найти окончательные кластеры.

Проблема заключается в том, чтоЯ считаю, что он отлично работает с одним главным узлом и двумя рабочими узлами в AWS EMR (оценка силуэта больше 0,7), но становится намного хуже, если я выбираю более двух рабочих узлов или меняю тип рабочих узлов (оценка силуэта меньше 0,3).

В частности:

1) если есть один рабочий узел, результат всегда> 0,7;

2), если есть два рабочих узла, то только еслитип оборудования m4.2xlarge, результат> 0.7;

3) если имеется более двух рабочих узлов, независимо от типа оборудования, результат всегда намного хуже;

Поскольку этот метод основан на разделах, я уже пытался зафиксировать раздел на одном и том же номере каждый раз, используя repartition () или coalesce () перед запуском модели.Но результаты все те же.Кто-нибудь знает, почему это произошло?

Я приложил часть документации в графике для справки (хотя данные в документации очень малы, я также пробовал 50 м строк, и это имеет тот же результат)

Спасибозаранее.


Среда:

AWS EMR: Hadoop 2.8.4;Ливий 0.5.0;Улей 2.3.3;Искра 2.3.2;

AWS Sagemaker: SparkMagic с python34
Документация анализа результатов

Result Analysis Documentation

...