歡迎關注天善智能,我們是專注於商業智能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之間的有效橋樑:
實際上,這意味著更快的數據傳輸和對更大數據集的支持。具體來說,此次改進了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 <
接下來,我們將基於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)})
最後但並非最不重要的是,超過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)})
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 .prediction1 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年終文章整理(類型篇)
回覆 爬蟲 爬蟲三大案例實戰
回覆 Python 1小時破冰入門
回覆 數據挖掘 R語言入門及數據挖掘
回覆 人工智能 三個月入門人工智能
回覆 數據分析師 數據分析師成長之路
回覆 機器學習 機器學習的商業應用
回覆 數據科學 數據科學實戰
回覆 常用算法 常用數據挖掘算法
閱讀更多 天善智能 的文章