Spark04——Spark程序简单使用

1、执行第一个spark程序

在spark目录下执行以下任务:

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://node01:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
examples/jars/spark-examples_2.11-2.1.3.jar \
100

该算法是利用蒙特•卡罗算法求圆周率PI,最后的100为任务迭代的次数,该次数越大,结果越趋向于精确。
参数说明:
–master spark://node1:7077 指定Master的地址
–executor-memory 1G 指定每个worker可用内存为1G,该处数字应为正整数。当虚拟机内存较小是,也可以写100M,500K。但不能写成类似0.5G,会报错。
–total-executor-cores 2 指定整个集群使用的cup核数为2个

运行过程中,master界面中Running Applications显示如下:

在这里插入图片描述
运行结束后:
在这里插入图片描述
运行结果截图:
在这里插入图片描述

注意:以上运行程序中,指明了 --master spark://node01:7077 ,这是在已知master所在主机的情况下(此时确定master是node01,且为Alive状态),否则会报错。

高可用模式下,当集群设备主机较多时,在程序执行前不能确定哪台主机master为Alive状态时(高可用模式下,master可能有多个,但只有一个是Alive状态),可以在SparkContext指向一个Master列表。
例如:如果我三台主机均启动了master,在执行命令时,我可以将master的地址设置为:--master spark://node1:7077,node2:7077,node3:7077 ,这样应用程序执行时会轮询列表,找到状态为Alive的Master,将任务提交给该Master.
以上任务命令可改为:

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://node01:7077,node02:7077,node03:7077 \
--executor-memory 500M \
--total-executor-cores 2 \
examples/jars/spark-examples_2.11-2.1.3.jar \
100

2、启动Spark-Shell

spark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,用户可以在该命令行下用scala编写spark程序。

2.1 运行spark-shell --master local[N] 读取本地文件

单机模式:通过本地N个线程跑任务,只运行一个SparkSubmit进程。

案例:wordcount实现

需求:读取本地文件,实现文件内的单词计数。
1、准备本地文件words.txt,这里放在/root/ 目录下:
在这里插入图片描述
2、启动Spark-shell:

bin/spark-shell --master local[2] 

–master local[N]

  • local表示本地模式,N是一个正整数,local[N]表示本地采用N个线程运行程序
  • 它会产生一个SparkSubmit进程

在这里插入图片描述3、编写scala代码

sc.textFile("/root/words.txt").flatMap(x=>x.split(" ")).map(x=>(x,1)).reduceByKey((x,y)=>x+y).collect

或者简写:

sc.textFile("/root/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

在这里插入图片描述

说明:
sc:Spark-Shell中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用sc即可。
textFile:读取数据文件
flatMap:对文件中的每一行数据进行切分,这里按照空格分隔。
map:对出现的每一个单词记为1(word,1)
reduceByKey:对相同的单词出现的次数进行累加
collect:触发任务执行,收集结果数据。

2.2 使用spark-shell --master local[N] 读取HDFS上数据文件,实现单词统计

1、spark整合HDFS
vim /export/servers/spark/conf/spark-env.sh
添加hadoop的配置文件目录:

export HADOOP_CONF_DIR=/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop

添加之后,spark可以调用hadoop配置文件中相关内容。
2、重新启动hadoop,spark
3、上传words.txt到hdfs中,这里放在/ 目录下
3、spark-shell --master local[2]
执行命令将结果打印输出:

sc.textFile("/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

在这里插入图片描述
或者

sc.textFile("hdfs://node01:8020/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

在这里插入图片描述

执行命令,将结果保存到hdfs上:

sc.textFile("/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("/out")
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值