2017-04-05 3 views
4

pyspark mllibpyspark ml 패키지의 차이점은 무엇입니까? : pyspark mllib하지 않는 동안`pyspark mlll` 대`pyspark ml` 패키지

https://spark.apache.org/docs/latest/api/python/pyspark.mllib.html

https://spark.apache.org/docs/latest/api/python/pyspark.ml.html

pyspark mllib이 dataframe 수준에서 목표 알고리즘을 것으로 보인다 내가 찾은 pyspark ml

한 가지 차이점은 pyspark.ml.tuning.CrossValidatorpyspark ml 구현입니다.

Apache Spark 프레임 워크에서 알고리즘을 구현하는 경우 mllib이지만 분할이있는 것으로 보이는 경우 라이브러리에서 사용해야하는 것은 무엇입니까?

형식이 변형되지 않은 상태에서 각 프레임 워크마다 서로 다른 패키지 구조가 포함되어 있으므로 상호 운용성이없는 것으로 보입니다.

답변

8

내 경험에 의하면 pyspark.mllib 클래스는 pyspark.RDD과 만 사용할 수 있지만 반면에 (언급했듯이) pyspark.ml 클래스는 pyspark.sql.DataFrame과 함께 사용할 수 있습니다.

DataFrame 기반 기계 학습 API를 사용자가 신속하게 조립하고 실용적인 기계 학습 파이프 라인을 구성 할 수 있도록 : pyspark.ml package 상태에서 pyspark.ml, 첫 번째 항목에 대한 문서에서이 기능을 지원하는 언급이있다.

이제는 Spark 2.0에서 제공되는 3 가지 API, 상대적인 장점/단점 및 비교 성능에 대해 잠깐 읽어 보았습니다. A Tale of Three Apache Spark APIs: RDDs, DataFrames, and Datasets. 필자는 새로운 클라이언트 서버에 대한 성능 테스트를 수행하고 있었으며 DataFrame 기반 접근 방식 (선택의 여지가있는 접근 방식)과 반대로 RDD 기반 접근 방식을 개발할 가치가있는 시나리오가 있다면 관심이있었습니다. 탈선.

요점은 각각 상황에 따라 적절하고 그렇지 않은 상황이 있다는 것입니다. 기억 나는 한 가지 예는 데이터가 이미 구조화되어있는 경우 DataFrames가 RDD보다 성능 이점을 제공한다는 것입니다. 이는 작업의 복잡성이 증가함에 따라 분명히 과감합니다. 또 다른 관찰은 DataSets 및 DataFrames가 RDD보다 캐싱 할 때 훨씬 적은 메모리를 소비한다는 것입니다. 요약하면 저자는 낮은 수준의 작업에 대해서는 RDD가 훌륭하지만 높은 수준의 작업을 위해서는 다른 API의 DataFrames 및 DataSets를보고 표시하는 것이 우수하다고 결론지었습니다.

질문에 대한 답을 찾기 위해이 패키지의 클래스가 pyspark.sql.DataFrames을 사용하도록 설계되었으므로 대답은 대답 pyspark.ml입니다. DataFrame 대 RDD로 구조화 된 동일한 데이터에 대해 테스트하는 경우 이러한 각 패키지에 구현 된 복잡한 알고리즘의 성능이 중요하다고 생각합니다. 또한 데이터를보고 뛰어난 시각적 요소를 개발하는 것이보다 직관적이며 성능이 향상됩니다.

+0

+1, 알고리즘 구현면에서 데이터 프레임 레벨보다 RDD 레벨에서 더 빨리 구현하는 경험이 있지만 SQL (데이터 프레임) 스타일보다는 기능 (rdd)을 선호합니다. –