0
点赞
收藏
分享

微信扫一扫

如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业

霍华德 2022-09-21 阅读 93

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。


1.文档编写目的



继上一章介绍​​如何使用R连接Hive与Impala​​后,Fayson接下来讲讲如何在CDH集群中提交R的Spark作业,Spark自带了R语言的支持,在此就不做介绍,本文章主要讲述如何使用Rstudio提供的sparklyr包,向CDH集群的Yarn提交R的Spark作业。


  • 内容概述

1.命令行提交作业

2.CDSW中提交作业

3.总结


  • 测试环境

1.操作系统:RedHat7.2

2.采用sudo权限的ec2-user用户操作

3.CDSW版本1.1.1

4.R版本3.4.2


  • 前置条件

1.Spark部署为On Yarn模式

2.CDH集群正常

3.CDSW服务正常


2.命令行提交作业



1.在R的环境安装sparklyr依赖包

[ec2-user@ip-172-31-21-45 ~]$ RR version 3.4.2 (2017-09-28) -- "Short Summer"Copyright (C) 2017 The R Foundation for Statistical ComputingPlatform: x86_64-pc-linux-gnu (64-bit)...> install.packages("sparklyr")

> install.packages("nycflights13")

> install.packages("Lahman")

> install.packages("ggplot2")

如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业_spark

如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业_spark_02


2.编写R测试代码

library(sparklyr)library(dplyr)sc <- spark_connect(master = 'yarn-client', spark_home = Sys.getenv("SPARK_HOME","/opt/cloudera/parcels/SPARK2/lib/spark2"))iris_tbl <- copy_to(sc, iris)flights_tbl <- copy_to(sc, nycflights13::flights, "flights")batting_tbl <- copy_to(sc, Lahman::Batting, "batting")src_tbls(sc)flights_tbl %>% filter(dep_delay == 2)delay <- flights_tbl %>%
group_by(tailnum) %>%
summarise(count = n(), dist = mean(distance), delay = mean(arr_delay)) %>%
filter(count > 20, dist < 2000, !is.na(delay)) %>%
collect


3.命令行运行代码

[ec2-user@ip-172-31-21-45 ~]$ Rscript sparklyr.R

如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业_spark_03


4.访问8088服务查看作业运行情况

如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业_h5_04


作业运行成功

如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业_h5_05


执行结果:

如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业_h5_06


3.CDSW提交作业



1.安装依赖包

install.packages("sparklyr")install.packages("nycflights13")install.packages("Lahman")install.packages("ggplot2")

如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业_hive_07


2.创建sparklyrByCDSW.r文件,将命令行测试代码拷贝至sparklyrByCDSW.r

library(rlang)library(sparklyr)library(dplyr)sc <- spark_connect(master = 'yarn-client', spark_home = Sys.getenv("SPARK_HOME","/opt/cloudera/parcels/SPARK2/lib/spark2"))iris_tbl <- copy_to(sc, iris)flights_tbl <- copy_to(sc, nycflights13::flights, "flights")batting_tbl <- copy_to(sc, Lahman::Batting, "batting")src_tbls(sc)flights_tbl %>% filter(dep_delay == 2)delay <- flights_tbl %>%
group_by(tailnum) %>%
summarise(count = n(), dist = mean(distance), delay = mean(arr_delay)) %>%
filter(count > 20, dist < 2000, !is.na(delay)) %>%
collect# plot delayslibrary(ggplot2)ggplot(delay, aes(dist, delay)) +
geom_point(aes(size = count), alpha = 1/2) +
geom_smooth() +
scale_size_area(max_size = 2)spark_disconnect(sc)


3.运行代码测试

如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业_h5_08


4.查看Yarn作业

如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业_spark_09


5.运行结果

如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业_h5_10


Yarn作业显示

如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业_spark_11


4.总结



通过Rstudio提供的sparklyr包,你可以连接到Spark本地实例以及远程Spark集群,本文档主要讲述了R通过调用sparklyr提供的SparkAPI接口与Spark集群建立连接,而未实现在Spark中调用R的函数库或自定义方法。如何在Spark集群中分布式运行R的所有代码(Spark调用R的函数库及自定义方法),Fayson会在接下来的文章做详细介绍。



醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花!

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。






如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业_spark_12


举报

相关推荐

0 条评论