作者: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 <- spark_connect(master = "local")bench::press(rows = c(10^6, 10^7), {  bench::mark(    arrow_on = {      library(arrow)      sparklyr_df <<- copy_to(sc, data.frame(y = 1:rows), overwrite = T)    },    arrow_off = if (rows <= 10^6) {if ("arrow" %in% .packages()) detach("package:arrow")      sparklyr_df <<- copy_to(sc, data.frame(y = 1:rows), overwrite = T)    } else NULL, iterations = 4, check = FALSE)})

接下来,我们将基于10M和50M记录的collect()进行基准测试:

bench::press(rows = c(10^7, 5 * 10^7), {  bench::mark(    arrow_on = {      library(arrow)      collected <- sdf_len(sc, rows) %>% collect()    },    arrow_off = if (rows <= 10^7) {if ("arrow" %in% .packages()) detach("package:arrow")      collected <- sdf_len(sc, rows) %>% 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 <- spark_connect(master = "local")iris <- copy_to(sc, iris)xgb_model <- xgboost_classifier(iris,Species ~ .,num_class = 3,num_round = 50,max_depth = 4)xgb_model %>%ml_predict(iris) %>%select(Species, predicted_label, starts_with("probability_")) %>%glimpse()
#> Observations: ??#> Variables: 5#> Database: spark_connection#> $ Species                <chr> "setosa", "setosa", "setosa", "setosa", "…#> $ predicted_label        <chr> "setosa", "setosa", "setosa", "setosa", "…#> $ probability_versicolor <dbl> 0.003566429, 0.003564076, 0.003566429, 0.…#> $ probability_virginica  <dbl> 0.001423170, 0.002082058, 0.001423170, 0.…#> $ probability_setosa     <dbl> 0.9950104, 0.9943539, 0.9950104, 0.995010…

3. Broom

虽然Spark通过sparklyr对broom的支持已经开发了很长一段时间,但是这个版本标志着所有建模功能的完成。

movies <- data.frame(user   = c(1, 2, 0, 1, 2, 0),item   = c(1, 1, 1, 2, 2, 0),rating = c(3, 1, 2, 4, 5, 4))copy_to(sc, movies) %>%  ml_als(rating ~ user + item) %>%  augment()
# Source: spark<?> [?? x 4]user  item rating .prediction  <dbl> <dbl>  <dbl>       <dbl>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 <- spark_connect(master = "local")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语言入门及数据挖掘
回复 人工智能     三个月入门人工智能
回复 数据分析师  数据分析师成长之路 
回复 机器学习     机器学习的商业应用
回复 数据科学     数据科学实战
回复 常用算法     常用数据挖掘算法

要么忙着活,要么忙着死

sparklyr 1.0发布,有哪些新功能?相关推荐

  1. RT-Thread Studio V2.0发布啦!新功能新特性等你来体验!

    时光如梭,一眨眼离V1.1.5版本发布已经过去一个多月了,2020年也进入了最后一个月的倒计时,你们翘首以盼的Studio新版本终于发布啦!感谢一直使用和关注Studio的工程师们,感谢你们一直热心地 ...

  2. kail linux稳定版本,Kali Linux 2020.3 稳定版已发布 更新后新功能概览

    Kali Linux 2020.3稳定版已发布,新版带来了许多令人印象深刻的更新,例如引入 zsh,并宣布从 bash 切换至 zsh 的计划(目前仍然默认使用 bash,2020.4 将默认使用 z ...

  3. 两千字揭密 MySQL 8.0.19 三大索引新功能:隐藏索引,降序索引,函数索引

    导读:本文详细介绍 MySQL 8.0.19 三大索引新功能,隐藏索引,降序索引,函数索引,结合其他同仁的技术应用案例,进一步进行验证改编,最后总结心得,希望对大家有帮助. MySQL 8.0 版本带 ...

  4. groupby索引有效吗_两千字揭密 MySQL 8.0.19 三大索引新功能

    原文链接:https://www.modb.pro/db/22619 导读:本文详细介绍 MySQL 8.0.19 三大索引新功能,隐藏索引,降序索引,函数索引,结合其他同仁的技术应用案例,进一步进行 ...

  5. 微信6.5.10版 android,安卓版微信6.5.10版发布:这些新功能你都知道么?

    原标题:安卓版微信6.5.10版发布:这些新功能你都知道么? 对于微信大家都很熟悉吧,之前微信只能在手机上使用,现在电脑版微信也有了,所以大家一般每天都是在刷微信中度过,不是在微信聊天,就是在微信聊天 ...

  6. 微信小程序0.11.122100版本新功能解析

    微信小程序0.11.122100版本新功能解析 我的知乎专栏-小楼昨夜又秋风 https://zhuanlan.zhihu.com/oldtimes 新版本就不再吐槽了,整的自己跟个愤青似的.人老了, ...

  7. QQ2006Beta2火热发布!看新功能+抢先下载(转)

    QQ2006Beta2火热发布!看新功能+抢先下载(转) "5.1"长假刚过,QQ最新版――QQ2006 beta2面世.该版本推出了一系列好用好玩的全新功能,特别是群内一起看电视 ...

  8. .NET 6 Preview 4 已发布,这些新功能值得关注!

    作者 | WeihanLi       责编 | 欧阳姝黎 出品 | amazingdotnet 我们很高兴地发布 .NET 6 Preview 4.现在,我们到 .NET 6 正式发布尚有一半.现在 ...

  9. 八猴模型html文件,4年来首次更新!八猴4.0都有哪些新功能?

    好了,应一位老粉丝的要求,我们今天来说说8猴新版4.0的功能. 前天吧,具体哪天忘了,国内和国外有时差,但是不管了,Marmoset发布了Toolbag4.0,也就是我们国内小伙伴俗称的八猴,这也是近 ...

  10. android7.12新功能,安卓7.0值得注意的新功能 新增分屏和更合理的通知栏

    安卓7.0系统发布在即,虽说原生安卓系统的发布到最终变成针对各机型优化后的ROM发送到用户手上还需要一段时间,不过这些新功能都还是值得关注一下的.小米的MIUI9.华为的EMUI等等大手机厂商也都在向 ...

最新文章

  1. 谭浩强《C++程序设计》学习
  2. [改善Java代码]避开基本类型数组转换列表陷阱
  3. adb和adbd详尽分析
  4. php mysql 登录注销_PHP与MYSQL实现用户登录注销
  5. 服务器$java_top路径_ERP实施项目-MD120_FIN000_即时打印_V1.0
  6. php 转化js数组字符串,js数组怎么转为字符串
  7. python知识笔记_[Python笔记]第一篇:基础知识
  8. 51单片机的轮胎气压监测系统_汽车的胎压监测系统有哪些作用?
  9. linux访问ftp服务器命令
  10. Matlab 2016a 安装及破解方法
  11. JAVA后端开发浅谈
  12. 管程由哪三部分组成_换热器是几壳程?几管程的?
  13. charles请求转发_使用Charles代理进行请求转发
  14. Windows 使用 Detours 进行 HOOK
  15. windows或linux下用Virtualbox安装Win 8.1等系统错误0x000000C4解决办法
  16. CAD关于图层隐藏图层操作(com接口c#语言)
  17. JavaWeb - Request Response
  18. 计算机视觉编程 第六章 图像聚类
  19. 大数据产品价值主张_十年之后大数据的价值主张
  20. python中pivot table 透视表实例

热门文章

  1. 关于依赖倒置,控制反转和依赖注入的趣谈
  2. 网络唤醒无需任何软件,实现局域网广域网远程唤醒计算机
  3. SSH框架总结(框架分析+环境搭建+实例源码下载
  4. Alien Skin Exposure7滤镜软件功能作用
  5. 操蛋!新来的同事竟然不会在javaee项目中使用WebSocket~
  6. VS Code 新版本重磅发布,迎来 2020 年首个重大更新!
  7. 华为:行业危机时,只做一件事:抢人!
  8. 人生的要务:提高自己的思维和格局
  9. 互联网创业公司残酷一幕:全员降薪,裁员凶猛与一夜解散
  10. 微博每日数十亿级业务下的计数器如何扩展Redis?