概述
大数据时代,做数据分析的人才辈出,Java、Scala、Go、Julia、Python、JavaScript都不断涌现出很多数据分析的新工具,然而对于数据分析来说,这些工具都不是分析的核心,分析的核心在于对市场业务、对具体数据的理解。相信你也见过太多脱离具体应用场景和业务数据而空谈算法的『数据分析大师』了。算法的文章在教科书、论文、已经各种文章里面都是大把大把的,然而大道至简,真正能将算法转化为生产力解决实际问题才是关键。
作为统计学出身的人,真心无力折腾Java的设计模式、JS的异步回调,我们更倾向于把精力放在数据、模型、分析、拟合、预测、检验、报告等等。在SparkR之后,RStudio公司又推出了全新力作Sparklyr,全面继承dplyr的操作规范。通过Sparklyr和Docker的完美结合,Spark的大数据计算引擎门槛进一步降低!不仅仅简化了分布式计算的操作,还简化了安装部署的环节,我们只几乎不需要做什么改动就可以直接运用R中的dplyr进行分布式的计算,几乎不需要学习此前Scala风格的API。
什么是Sparklyr
Sparklyr顾名思义就是 Spark + dplyr。首先,它实现了将dplyr的data frame所有操作规范对Spark计算引擎的完整封装。其次,它是的R可以透过Spark的MLib机器学习库拓展分布式机器学习算法的能力。最后,对于其他Spark功能,我们还可以通过`sparkapi`来调用所有Spark库中的Scala接口。
目前,最新版本的RStudio 已经集成了Spark引擎,本文将带你快速进入大数据分析领域。
什么是Docker
Docker是类似于虚拟机的一种虚拟化软件,让我们可以在不同操作系统上运行相同的软件。它主要解决了虚拟机安装软件速度比较慢的问题,相对于虚拟机,Docker的启动速度是秒级的。本文将通过一个详细的例子,指导各位R语言的爱好者快速安装带有Spark功能的RStudio软件,快速开启您的大数据之旅。
软件安装
鉴于大量数据分析用户还是以Windows操作系统为主,或许还深度绑定了Excel这样的数据分析神器,本文将放弃以Unix视角,采用Windows视角为各位看官介绍软件安装过程。
步骤一:安装Windows版本Docker
你可以进入http://www.docker.com的官网首页,看到软件下载链接,这里需要您的操作系统在Windows 10及其以上版本。如果不想进入官网,也可以点击这个链接:download.docker.com/win
下载之后根据系统提示默认安装即可,不得不说,Docker是一个神奇的软件。
步骤二:启动Docker软件
点击软件图标即可启动Docker软件(最新版本号和此图有可能并不一致)。接着,您可以选择打开系统自带Powershell软件,向Powershell中复制粘贴如下命令:
docker run -d -p 8787:8787 --name financer index.tenxcloud.com/7harryprince/sparkr-rstudio
这时候只需要耐心等待您的大数据分析系统安装完成。(软件大概会占用4G左右的空间,我已经为你预先为你一站式安装了最新的 Shiny, R markdown,R notebook,jdk8,gcc5.3,R 3.3 以及其他数据分析常用的R包)
步骤三:访问RStuido软件
一旦软件完成安装,你可以在Chrome或者Edge中输入下面的地址访问到RStudio软件:
localhost:8787
最后,输入默认账号`harryzhu`,密码`harryzhu`即可进入RStudio软件。
推荐系统实战
library(sparkxgb)
library(sparklyr)
library(dplyr)
library(nycflights13)
Sys.setenv(SPARK_HOME="/opt/spark-2.4.0-bin-hadoop2.7")
Sys.getenv("SPARK_HOME")
sc = spark_connect("local")
spark_flights <- sdf_copy_to(sc, flights)
以 Xgboost 模型为例 建立一个航班延误的推荐模型
pak::pkg_install("sparkxgb")
library(sparkxgb)
spark_flights <- sdf_copy_to(sc, flights)
xgb_pipeline <- ml_pipeline(sc) %>%
ft_dplyr_transformer(
tbl = spark_flights
) %>%
ft_binarizer(
input.col = "dep_delay",
output.col = "delayed",
threshold = 15
) %>%
ft_bucketizer(
input.col = "sched_dep_time",
output.col = "hours",
splits = c(400, 800, 1200, 1600, 2000, 2400)
) %>%
xgboost_classifier(delayed ~ month + day + hours + distance,
num_class = 3,num_round = 50, max_depth = 4)
num_class = 3,num_round = 50, max_depth = 4)
参考资料
RStudio又搞出了个大杀器!sparklyr包:实现Spark与R的接口,会用dplyr就能玩Spark
Using Spark with Shiny and R Markdown Slide
channel9.msdn.com/Event Video
blogs.msdn.microsoft.com
databricks.com/blog/201
conferences.oreilly.com
Top 5 Mistakes When Writing Spark Applications