2016-08-25 6 views
1

UI에서 RowAmitrix.computeSVD가 스칼라를 사용하여 실행 중입니다. 클러스터에서 "treeAggregate"만 실행 중이며 응용 프로그램 마스터의 UI는 아무 것도 표시하지 않습니다. computeSVD를 계속 실행합니다. 그래서 나는 "treeAggregate"만이 클러스터에서 실행 중이며 나머지는 드라이버에서 실행 중이라고 가정합니다.Spark - 드라이버에서 실행되는 MLlib computeSVD

모든 SVD를 클러스터에서 실행할 수있는 방법이 있습니까? 드라이버는 일반적으로 리소스가 제한적이며 computeSVD는 9446 * 9446 행렬에 오랜 시간이 걸립니다.

답변

0

개인 API로 수정하지 않으면 수정 전략이 불가능한 것 같습니다.

열 수에 따라 Spark는 자동으로 계산 방법을 조정하고 숫자가 커서 열 개수에 비해 상대적으로 높은 숫자 인 경우에만 다중 패스가있는 완전 분산 모드를 사용합니다.

처음에는 knCol/3ncol/2 사이로 유지함으로써 분산 계산을 트리거 할 수있었습니다.

+0

OK zero323, 나는 k = 9446을 사용하기 위해 치수를 보존해야합니다. 나중에 SVD를 사용하여 원본 행렬의 역함수를 수행합니다. 나는 이것이 큰 수라고 생각하지만 클러스터에서 분산 된 작업을 여전히 보지 못하고 있는데, 드라이버에서 실행됩니다. –

+0

zero323, 전체 순위를 사용하려면 어떻게해야합니까? –

+0

여기 괜찮은 해결책이 없다면. 필요한 클래스가 모두 'private'에서 'mllib'까지이므로 여기에는 선택의 여지가 많지 않습니다. 액세스 제한을 다시 구현하거나 의도적으로 중단하십시오. – zero323