복붙노트

[HADOOP] 스파크 벡터와 스칼라 불변 벡터의 차이점은 무엇입니까?

HADOOP

스파크 벡터와 스칼라 불변 벡터의 차이점은 무엇입니까?

나는 Spala 1.4의 스칼라 프로젝트를 작성 중이며 현재 나의 초기 입력 데이터를 spark.mllib.linalg.Vectors과 scala.immutable.Vector로 변환하는 과정에서 나중에 알고리즘으로 작업하기를 원합니다. 어떤 사람이 두 사람의 차이점을 간략하게 설명하고 어떤 상황에서 다른 사람보다 사용하는 것이 더 유용 할 수 있습니까?

고맙습니다.

해결법

  1. ==============================

    1.spark.mllib.linalg.Vector는 선형 대수학 응용 프로그램 용으로 설계되었습니다. mllib는 DenseVector, SparseVector의 두 가지 구현을 제공합니다. norm이나 sqdist와 같은 유용한 메소드에 액세스 할 수있는 반면에 그렇지 않으면 제한적입니다.

    spark.mllib.linalg.Vector는 선형 대수학 응용 프로그램 용으로 설계되었습니다. mllib는 DenseVector, SparseVector의 두 가지 구현을 제공합니다. norm이나 sqdist와 같은 유용한 메소드에 액세스 할 수있는 반면에 그렇지 않으면 제한적입니다.

    org.apache.spark.mllib.linalg의 모든 데이터 구조는 64 비트 부동 소수점 숫자 (scala.Double) 만 저장할 수 있습니다.

    mllib을 사용하려는 경우 spark.mllib.linalg.Vector는 거의 유일한 옵션입니다. mllib (로컬 및 분산 모두)의 나머지 모든 데이터 구조는 org.apache.spark.mllib.linalg.Vector 위에 빌드됩니다.

    그렇지 않으면 scala.immutable.Vector가 아마도 더 나은 선택 일 것입니다. 이것은 범용, 고밀도 데이터 구조입니다.

    모든 유형의 객체를 저장할 수 있으므로 예를 들어 Vector [String]을 가질 수 있습니다.

    Traversable이므로 맵, 플랫 맵, 축소, 폴드, 필터 등과 같은 모든 예상되는 메소드에 액세스 할 수 있습니다.

    편집 : 대수 연산이 필요하고 org.apache.spark.mllib.linalg.distributed의 데이터 구조를 사용하지 않으면 spark.mllib.linalg.Vector보다 breeze.linalg.Vector를 선호 할 수 있습니다. 그것은 내적 (dot product)을 포함하여보다 큰 대수적 방법 세트를 지원하고 전형적인 콜렉션 API를 제공합니다.

  2. from https://stackoverflow.com/questions/31255756/difference-between-spark-vectors-and-scala-immutable-vector by cc-by-sa and MIT license