什么是spark?
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。
Spark是基于内存计算的通用大规模数据处理框架。
Spark快的原因:
1.Spark基于内存,尽可能的减少了中间结果写入磁盘和不必要的sort、shuffle(sort:顾名思义就是排序,shuffle:言简意赅就是将数据打散之后再重新聚合的过程,比如groupBy、reduceBykey等)
2.Spark对于反复用到的数据进行了缓存
3.Spark对于DAG进行了高度的优化,具体在于Spark划分了不同的stage和使用了延迟计算技术
spark基于JVM,底层语言用scala编写,java也可以,不过scala最适合,正是由于这个特性,所以在一些方法的用法上和java极度相似(语法略有不同)
spark计算引擎中的核心:SparkCore也就是核心,RDD:弹性数据分布集
在计算上有两种算子:即转换算子(Transformation )和行动算子(Action)
1)Transformation 变换/转换算子:这种变换并不触发提交作业,完成作业中间过程处理。
Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。
2)Action 行动算子:这类算子会触发 SparkContext 提交 Job 作业。
Action 算子会触发 Spark 提交作业(Job),并将数据输出 Spark系统。
入门之前,首先,进行环境准备,安装以及配置scala环境和spark环境,这里还要用到基于hadoop的spark环境配置,如图:
环境变量也配置一下:
运行CMD查看环境是否就绪:
scala环境已经安装完毕,此时再去看spark环境是否就绪:进入bin目录下运行cmd,输入命令:spark-shell,如下图就是启动成功(环境大致没问题了)
当所有环境准备就绪的时候,这时候,我们就可以编写一个简单的spark例子了:
eg:统计爬取的数据文件(也可以是日志文件等),输出并计算我们想要的数据: