spark简单学习

为啥学spark

中间结果输出:基于MapReduce的计算引擎通常会将中间结果输出到磁盘上,进行存储和容错。出于任务管道承接的,考虑,当一些查询翻译到MapReduce任务时,往往会产生多个Stage,而这些串联的Stage又依赖于底层文件系统(如HDFS)来存储每一个Stage的输出结果

SparkMapReduce的替代方案,而且兼容HDFSHive,可融入Hadoop的生态系统,以弥补MapReduce的不足。

spark  ----->   弥补Mapreduce不足(产生多个Stage)(具有快,易用,通用,兼容性)

spark比mapreduce更加灵活,计算模型不限于Map和Reduce。存储是在内存中,而不是本地磁盘。能够减少IO开销。MapReduce计算中间结果,保存在磁盘中,Hadoop低层实现备份机制,保证数据容错;SparkRDD实现基于Lineage的容错机制和设置检查点方式的容错机制。

 

1.Spark环境部署

①将包传到文件夹中,解压,改名   输入:tar -zxvf spark-2.3.2-bin-hadoop2.7.tgz -C /export/servers/              改名:mv spark-2.3.2-bin-hadoop2.7/ spark(到指定文件夹下改名哈)

将spark-env.sh.template配置模板文件复制一份并命名为spark-env.sh           修改spark-env.sh文件,在该文件添加以下内容(根据自己的配置进行修改)vim spark-env.sh

 

 ③复制slaves.template文件,并重命名为slaves,编辑slaves配置文件,主要是指定Spark集群中的从节点IP,由于在hosts文件中已经配置了IP和主机名的映射关系,因此直接使用主机名代替IP

 

④分发文件  修改完成配置文件后,将spark目录分发至hadoop02和hadoop03节点  输入:scp -r /export/servers/spark/ hadoop03:/export/servers/
⑤启动Spark集群(在sbin下启动)

 

 

 

 

2.第一个案例

①提交SparkPi程序。

 

 

 ②PI值计算成功

 

 

 

 ③Spark-Shell是一个强大的交互式数据分析工具,初学者可以很好的使用它来学习相关API。运行Spark-Shell命令。在spark/bin目录中,执行下列命令进入Spark-Shell交互环境: 

 

 进入普通spark集群                  bin/spark-shell --master spark://hadoop01:7077

 

 现在我们使用scala语言开发单词计数的spark程序   

首先在hdfs的/spark/input路径下建立一个words.txt

 

 整合spark和hdfs  先修改spark-env.sh配置文件  之后重启集群服务以及重启spark集群服务

再次启动交互式界面  bin/spark-shell --master local[2]

spark-shell 本省就是一个driver,它会初始化一个SparkContext对象为sc,用户可以直接调用。编写scala代码实现单词计数

 

3.第二个案例(求平均值)

①建一个数组,可以看成是科目和分数的对偶

 

 

 ②再建一个相似的数组

 

 ③再建一个,可以看成三个学生

 

 ④三个合成一个

 

 ⑤按照第一个分组

 

 ⑥求和除以长度  的平均值

 

4.第三个案例(重要函数操作过程) 

①创建一个lines

 

 ②按照空格分割

 

 ③合成一个

 

 ④每个单词后面给个1

 

 ⑤分组分开

 

 ⑥计算得

 

 

注第2到第5 可以直接通过这句话得到  val grouped = lines.flatMap(_.split(" ")).map((_,1)).groupBy(_._1)

 

 

 

 

 

 nice!

终于成了,就离谱!

 

 

posted @ 2021-06-22 17:58  泷十三  阅读(177)  评论(0编辑  收藏  举报