sparklyr 1.0發佈,有哪些新功能?

歡迎關注天善智能,我們是專注於商業智能BI,人工智能AI,大數據分析與挖掘領域的垂直社區,學習,問答、求職一站式搞定!

對商業智能BI、大數據分析挖掘、機器學習,python,R等數據領域感興趣的同學加微信:tstoutiao,邀請你進入數據愛好者交流群,數據愛好者們都在這兒。

作者:Javier Luraschi

翻譯:黃小偉,10年資深數據礦工。目前就職杭州有贊,歡迎加入有贊分析團隊


sparklyr 1.0目前已經可以通過CRAN直接下載、安裝使用!它提供了針對Apache Spark的接口,支持dplyr、MLlib、streaming、extensions等內容,以下是本次發佈版本的主要亮點:

1. Arrow: 支持在Spark 和 R之間實現更快、更大數據集的傳輸

2. XGBoost: 支持在分佈式數據集上訓練梯度增強模型

3. Broom: 將Spark的模型轉換為您熟悉的格式

4. TFRecords: 從Spark編寫TensorFlow記錄以支持深度學習工作流


install.packages("sparklyr")

1. Arrow

Apache Arrow是一種用於內存數據的跨語言開發平臺,您可以在Arrow及其他博客文章中閱讀更多相關信息。在sparklyr 1.0中,我們從概念上將Arrow視為R和Spark之間的有效橋樑:

sparklyr 1.0發佈,有哪些新功能?

實際上,這意味著更快的數據傳輸和對更大數據集的支持。具體來說,此次改進了collect()、copy_to()和spark_apply()。 以下基準測試使用 bench包來進行。

我們將首先在具有1M和10M行的數據框上對copy_to()進行基準測試:


library(sparklyr)sc bench::press(rows = c(10^6, 10^7), { bench::mark( arrow_on = { library(arrow) sparklyr_df <
sparklyr 1.0發佈,有哪些新功能?

接下來,我們將基於10M和50M記錄的collect()進行基準測試:


bench::press(rows = c(10^7, 5 * 10^7), { bench::mark( arrow_on = { library(arrow) collected % collect() }, arrow_off = if (rows <= 10^7) {if ("arrow" %in% .packages()) detach("package:arrow") collected % collect() } else NULL, iterations = 4, check = FALSE)})
sparklyr 1.0發佈,有哪些新功能?

最後但並非最不重要的是,超過100K和1M行的spark_apply()顯示了最顯著的改進。 在Spark上運行R時,速度提高40倍。


bench::press(rows = c(10^5, 10^6), { bench::mark( arrow_on = { library(arrow) sdf_len(sc, rows) %>% spark_apply(~ .x / 2) %>% dplyr::count() %>% collect }, arrow_off = if (rows <= 10^5) {if ("arrow" %in% .packages()) detach("package:arrow") sdf_len(sc, rows) %>% spark_apply(~ .x / 2) %>% dplyr::count() %>% collect } else NULL, iterations = 4, check = FALSE)})
sparklyr 1.0發佈,有哪些新功能?

2. XGBoost

sparkxgb是一個新的sparklyr擴展,可用於在Spark中訓練XGBoost模型。 sparkxgb可可按如下方式安裝:


install.packages("sparkxgb")

然後我們可以使用xgboost_classifier()來訓練和ml_predict()來輕鬆預測大型數據集:


library(sparkxgb)library(sparklyr)library(dplyr)
sc xgb_model xgb_model %>%ml_predict(iris) %>%select(Species, predicted_label, starts_with("probability_")) %>%glimpse()

#> Observations: ??#> Variables: 5#> Database: spark_connection#> $ Species  "setosa", "setosa", "setosa", "setosa", "…#> $ predicted_label  "setosa", "setosa", "setosa", "setosa", "…#> $ probability_versicolor  0.003566429, 0.003564076, 0.003566429, 0.…#> $ probability_virginica  0.001423170, 0.002082058, 0.001423170, 0.…#> $ probability_setosa  0.9950104, 0.9943539, 0.9950104, 0.995010…

3. Broom

雖然Spark通過sparklyr對broom的支持已經開發了很長一段時間,但是這個版本標誌著所有建模功能的完成。


movies copy_to(sc, movies) %>% ml_als(rating ~ user + item) %>% augment() 


# Source: spark> [?? x 4]user item rating .prediction    1 2 2 5 4.862 1 2 4 3.983 0 0 4 3.884 2 1 1 1.085 0 1 2 2.006 1 1 3 2.80

4.TFRecords

sparktf是一個新的sparklyr擴展,允許在Spark中編寫TensorFlow記錄。 這可用於在使用Keras或TensorFlow在GPU實例中處理大量數據之前對其進行預處理。 sparktf現在可以在CRAN上使用,可以按如下方式安裝:


install.packages("sparktf")

您可以簡單地在Spark中預處理數據,並使用spark_write_tf()將其寫為TensorFlow記錄:


library(sparktf)library(sparklyr)
sc copy_to(sc, iris) %>% ft_string_indexer_model("Species", "label", labels = c("setosa", "versicolor", "virginica") ) %>% spark_write_tfrecord(path = "tfrecord")

往期精彩:

  • R語言信用評分卡:探索性數據分析
  • 基於R實現統計中的檢驗方法---T檢驗
  • R語言中文社區2018年終文章整理(作者篇)
  • R語言中文社區2018年終文章整理(類型篇)
sparklyr 1.0發佈,有哪些新功能?

回覆 爬蟲 爬蟲三大案例實戰

回覆 Python 1小時破冰入門

回覆 數據挖掘 R語言入門及數據挖掘

回覆 人工智能 三個月入門人工智能

回覆 數據分析師 數據分析師成長之路

回覆 機器學習 機器學習的商業應用

回覆 數據科學 數據科學實戰

回覆 常用算法 常用數據挖掘算法


分享到:


相關文章: