Spark中Scala、Python和R的Shell操作

Spark中Scala、Python和R的Shell操作
实验环境
Linux Ubuntu 16.04
前提条件:

  1. Java 运行环境部署完成
  2. R语言运行环境部署完成
  3. Spark Local模式部署完成
    上述前提条件,我们已经为你准备就绪了。

实验内容
在上述前提条件下,完成Spark中Scala、Python和R的Shell操作

实验步骤
1.点击"命令行终端",打开新窗口

2.启动Scala的Shell

Scala是Spark默认的语言,在命令行终端中输入下面的命令即可启动Scala Shell

1
spark-shell
启动后终端显示如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
dolphin@tools:~$ spark-shell
Using Spark’s default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to “WARN”.
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
18/08/06 08:17:25 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
Spark context Web UI available at http://172.21.0.2:4040
Spark context available as ‘sc’ (master = local[*], app id = local-1533543446142).
Spark session available as ‘spark’.
Welcome to


/ / ___ / /
\ / _ / _ `/ __/ '/
/
/ .__/_,// //_\ version 2.1.3
/
/

Using Scala version 2.11.8 (Java HotSpot™ 64-Bit Server VM, Java 1.8.0_161)
Type in expressions to have them evaluated.
Type :help for more information.

scala>
如上出现了 Scala>表明进入了Scala的Shell

3.使用Scala shell完成单词统计案例

在Scala shell中输入下面的Scala语句

1
sc.textFile(“file:///home/dolphin/words.txt”).flatMap(.split(" ")).map((,1)).reduceByKey(+).saveAsTextFile(“file:///home/dolphin/output”)
执行后显示如下:

1
2
3
scala>sc.textFile(“file:///home/dolphin/words.txt”).flatMap(.split(" ")).map((,1)).reduceByKey(+).saveAsTextFile(“file:///home/dolphin/output”)

scala>
此时,在/home/dolphin/output目录下产生了结果文件。我们下载Scala命令行下输入下面命令来退出Scala命令行

1
:quit
此时又返回了命令行终端
输入下面的命令,来查看结果

1
cat ~/output/part-*
执行后显示如下,表明单词统计案例完成。

1
2
3
4
5
6
7
8
9
10
11
12
13
dolphin@tools:~$ cat ~/output/part-*
(are,2)
(am,1)
(how,1)
(dolphin,2)
(hello,2)
(what,1)
(now,1)
(world,1)
(you,2)
(i,1)
(words.txt,1)
(doing,1)
关于代码的说明:
sc是SparkContext对象,该对象是提交Spark程序的入口
textFile(“file:///home/dolphin/words.txt”)是在本地读取数据
flatMap(.split(" "))先map在压平
map((
,1))将单词和1构成元组
reduceByKey(+)按照key进行reduce,并将value累加
saveAsTextFile(“file:///home/dolphin/output”)将结果写入到本地中

4.启动Python的Shell

在命令行终端中输入下面的命令即可启动Python Shell

1
pyspark
启动后显示如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
dolphin@tools:~$ pyspark
Python 2.7.12 (default, Dec 4 2017, 14:50:18)
[GCC 5.4.0 20160609] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
Using Spark’s default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to “WARN”.
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
18/08/07 02:40:34 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
18/08/07 02:40:41 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
Welcome to


/ / ___ / /
\ / _ / _ `/ __/ '/
/
/ .
_/_,// //_\ version 2.1.3
/
/

Using Python version 2.7.12 (default, Dec 4 2017 14:50:18)
SparkSession available as ‘spark’.

如上出现了 >>>表明进入了Python的Shell

5.使用Spark Python实现单词筛选的案例

在python的命令行中执行下面的代码

1
2
3
4
lines = sc.textFile(“file:///apps/spark/README.md”)
pythonLines = lines.filter(lambda line: “Python” in line)
pythonLines.count()
pythonLines.collect()
执行后显示如下:

1
2
3
4
5
6

lines = sc.textFile(“file:///apps/spark/README.md”)
pythonLines = lines.filter(lambda line: “Python” in line)
pythonLines.count()
3
pythonLines.collect()
[u’high-level APIs in Scala, Java, Python, and R, and an optimized engine that’, u’## Interactive Python Shell’, u’Alternatively, if you prefer Python, you can use the Python shell:’]
关于代码的说明:
sc是SparkContext对象,该对象是提交Spark程序的入口
textFile(“file:///apps/spark/README.md”)是hdfs中读取数据
filter(lambda line: “Python” in line)是过滤掉不含"Python"的所有行
count()是统计数量
collect()是列出所有结果

退出Python shell,执行下面的命令

1
exit()
6.使用R语言的Shell

在命令行终端中输入下面的命令即可启动R Shell

1
sparkR
执行后显示如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
dolphin@tools:~$ sparkR

R version 3.2.3 (2015-12-10) – “Wooden Christmas-Tree”
Copyright © 2015 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R是自由软件,不带任何担保。
在某些条件下你可以将其自由散布。
用’license()'或’licence()'来看散布的详细条件。

R是个合作计划,有许多人为之做出了贡献.
用’contributors()'来看合作者的详细情况
用’citation()'会告诉你如何在出版物中正确地引用R或R程序包。

用’demo()'来看一些示范程序,用’help()'来阅读在线帮助文件,或
用’help.start()'通过HTML浏览器来看帮助文件。
用’q()'退出R.

Launching java with spark-submit command /apps/spark/bin/spark-submit “sparkr-shell” /tmp/Rtmpp6WiOW/backend_port31e446162cd0
Using Spark’s default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to “WARN”.
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
18/08/07 03:52:14 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
18/08/07 03:52:18 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException

Welcome to


/ / ___ / /
\ / _ / _ `/ __/ '/
/
/ .__/_,// //_\ version 2.1.3
/
/

SparkSession available as ‘spark’.
在启动过程中 - Warning messages:
1: In Filter(nzchar, unlist(strsplit(input, “,|\s”))) :
位元組碼版本不配; 用eval
2: 程辑包‘SparkR’是用R版本3.4.4 来建造的

如上显示 >表明进入了R语言的Shell

7.使用R操作SparkDataFrame

创建一个SparkDataFrame

1
people <- read.df("/apps/spark/examples/src/main/resources/people.json", “json”)
显示df中的数据

1
head(people)
执行后显示如下

1
2
3
4
5

head(people)
age name
1 NA Michael
2 30 Andy
3 19 Justin
只显示某一列数据

1
head(select(people, “name”))
执行后显示如下

1
2
3
4
5

head(select(people, “name”))
name
1 Michael
2 Andy
3 Justin
过滤数据

1
head(filter(people, people$age >20))
执行后显示如下

1
2
3

head(filter(people, people$age >20))
age name
1 30 Andy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无心 ylw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值