加入收藏 | 设为首页 | 会员中心 | 我要投稿 江门站长网 (https://www.0750zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Spark1.4.1中sparkR的编译使用全流程

发布时间:2021-11-18 17:28:50 所属栏目:教程 来源:互联网
导读:本文针对那些和我一样,对spark还挺熟悉但对R知之甚少甚至之前没听过的同学,在spark引入了sparkR后才开始零基础地开始学习使用。如果你本身对R和sparkR已经很熟悉了,就不用看了。 本文主要包含的内容: spark1.4.1编译 sparkR使用环境配置 sparkR的第一个

本文针对那些和我一样,对spark还挺熟悉但对R知之甚少甚至之前没听过的同学,在spark引入了sparkR后才开始零基础地开始学习使用。如果你本身对R和sparkR已经很熟悉了,就不用看了。
 
本文主要包含的内容:
 
 spark1.4.1编译
 sparkR使用环境配置
 sparkR的第一个例子
spark1.4.1编译
 
首先从spark官网下载spark1.4.0或者1.4.1的源码,并解压。 要使用sparkR,必须要先用带有sparkR的参数的编译命令,把sparkR编译到spark的tar包中。命令如下:
 
./make-distribution.sh --tgz -Pyarn -Phive -Psparkr -DskipTests -DHadoop.version=your version
 
比1.4版本前的编译命令,多了个“-Psparkr”,表示要把sparkR编译进去。(这里注意大小写)
 
 
 
sparkR使用环境配置
sparkR的运行需要依赖R语言环境。
 
如果通过某一台客户端向spark提交sparkR作业以及各项操作,那么只在本客户端机器上安装R环境后,可以并只可以通过yarn-client方式操作。 如果在整个spark的集群上都安装了R环境,则可以用yarn-cluster或者yarn-client方式提交。其实很好理解,driver在哪里启动,就需要哪里有R环境。yarn-client模式中,driver在客户端本地启动,所以只需要本地有R环境;要运行yarn-cluster模式,driver就需要在spark集群的某个节点启动,该节点是不确定的,所以需要整个spark集群有R环境。(本段是我的个人理解,并不一定正确,欢迎指正。)
 
R环境的安装配置,我是用rpm包安装的。
 
1. 从http://mirror.utexas.edu/epel/6/x86_64/ 下载如下这些包:
 
libRmath-3.2.1-1.el6.x86_64.rpm
 
libRmath-devel-3.2.1-1.el6.x86_64.rpm
 
R-core-3.2.1-1.el6.x86_64.rpm
 
R-core-devel-3.2.1-1.el6.x86_64.rpm
 
R-java-3.2.1-1.el6.x86_64.rpm
 
R-java-devel-3.2.1-1.el6.x86_64.rpm
 
R-3.2.1-1.el6.x86_64.rpm
 
R-devel-3.2.1-1.el6.x86_64.rpm
 
2. 对上述8个rpm包,依次执行 yum install ..... 注意,因为有依赖关系,要按照我上面的这个顺序依次安装。例如:
 
yum install libRmath-3.2.1-1.el6.x86_64.rpm
 
sparkR的第一个例子
现在确保你的spark集群满足这两个条件:
 
1. 使用的spark是已经把sparkR编译进来了的版本;
 
2. 准备操作sparkR的这台机器上有R环境。
 
两种运行sparkR的方法:
 
1. spark-shell方式:
 
sparkR --master yarn-client
 
2. 提交作业的方法
 
spark-submit --master yarn-client your-r-file.R
 
下面的一个R文件,是我从Github上抄过来的一个例子,可惜已经找不到github上的链接了,只能遥遥感谢这个example的作者了。用上面两种运行方法,可以直接拷贝到一个R文件中,并spark-submit提交;也可以启动一个sparkR的shell客户端,然后逐行输入。
 
# Download Spark 1.4 from http://spark.apache.org/downloads.html
#
# Download the nyc flights dataset as a CSV from https://s3-us-west-2.amazonaws.com/sparkr-data/nycflights13.csv
 
library(SparkR)
 
sc <- sparkR.init(appName="SparkR-DataFrame-example")
sqlContext <- sparkRSQL.init(sc)
 
# Launch SparkR using
# ./bin/sparkR --packages com.databricks:spark-csv_2.10:1.0.3
 
# The SparkSQL context should already be created for you as sqlContext
sqlContext
# Java ref type org.apache.spark.sql.SQLContext id 1
 
# Load the flights CSV file using `read.df`. Note that we use the CSV reader Spark package here.
flights <- read.df(sqlContext, "./nycflights13.csv", "com.databricks.spark.csv", header="true")
 
# Print the first few rows
head(flights)
 
# Run a query to print the top 5 most frequent destinations from JFK
jfk_flights <- filter(flights, flights$origin == "JFK")
 
# Group the flights by destination and aggregate by the number of flights
dest_flights <- agg(group_by(jfk_flights, jfk_flights$dest), count = n(jfk_flights$dest))
 
# Now sort by the `count` column and print the first few rows
head(arrange(dest_flights, desc(dest_flights$count)))
 
##  dest count
##1  LAX 11262
##2  SFO  8204
##3  BOS  5898
 
# Combine the whole query into two lines using magrittr
library(magrittr)
dest_flights <- filter(flights, flights$origin == "JFK") %>% group_by(flights$dest) %>% summarize(count = n(flights$dest))
arrange(dest_flights, desc(dest_flights$count)) %>% head

(编辑:江门站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读