2017-04-05 86 views
4

包裝pyspark mllibpyspark ml有什麼區別? :`pyspark mllib`與`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似乎是目標算法在數據幀的水平pyspark ml

一個不同之處,我發現是pyspark ml工具pyspark.ml.tuning.CrossValidatorpyspark mllib沒有。

我的理解是圖書館應該使用的,如果在Apache Spark框架上實現算法是mllib但似乎有分裂?

在沒有轉換類型的情況下,每個框架之間似乎沒有互操作性,因爲它們都包含不同的包結構。

回答

8

從我的經驗pyspark.mllib類只能與pyspark.RDD的使用,而(如你所說)pyspark.ml類只能與pyspark.sql.DataFrame的使用。有提到支持這一文件在pyspark.ml,第一個條目中pyspark.ml package狀態:

基於數據幀機器學習的API,讓用戶能夠快速組裝和配置實用機器學習管道。

現在我想起了一篇關於Spark 2.0中提供的三個API的相關優點/缺點和比較性能的文章。 A Tale of Three Apache Spark APIs: RDDs, DataFrames, and Datasets。我正在對新客戶端服務器進行性能測試,並且對於開發基於RDD的方法而不是基於DataFrame的方法(我選擇的方法)的情況有興趣,但我感興趣離題。

的要點是,有些情況下每個人都非常適合,而其他人可能不適合。我記得的一個例子是,如果你的數據已經結構化了,DataFrames給RDD帶來了一些性能上的好處,隨着操作的複雜性增加,這顯然是非常激烈的。另一個觀察結果是DataSets和DataFrames在緩存時比RDD消耗的內存要少得多。總而言之,作者總結說,對於低級別操作,RDD非常好,但對於高級操作,查看和綁定其他API的DataFrame和DataSet是優越的。

所以要回到你的問題的整個圓圈,我相信答案是一個響亮的pyspark.ml,因爲這個包中的類被設計爲利用pyspark.sql.DataFrames。我可以想象,如果要針對與DataFrame vs RDD相同的數據進行測試,那麼在這些軟件包中實現的複雜算法的性能將會很高。此外,查看數據和開發引人注目的視覺效果將更加直觀並且具有更好的性能。

+0

+1,根據我的經驗,在算法實現方面實現RDD級別的速度要快於數據幀級別,但我傾向於選擇函數(rdd)而不是sql(數據框架)樣式。 –