Spark

Spark 是专为大规模数据处理而设计的快速通用的计算引擎

生态系统圈

Spark组件

    Core; 核心,实现RDD,API等相关操作,是其他组件的基础
    SQL: 基于HiveQL与Spark交互的API,其中一个数据库表看作一个RDD
    Streaming: 对实时数据流进行处理和控制,以RDD的方式
    MLib: 常用的机器学习算法库, 将算法的实现转为对RDD的操作
    GraphX: 实现控制图、创建子图、访问路径上所有顶点等操作

Spark基本运行架构

    包含Spark上下文的驱动
    集群资源管理器
    工作节点
    任务控制节点
    具体任务执行进程

 

安装指令:

 启动单机本地       sh spark-shell --master=local

 

 

 

Spark 最核心的概念

RDD  --弹性分布式数据集       就是一种的集合类型,类似Array,list  

RDD  是一种特殊的集合类型,有分区机制,可以分布式的处理机制,加快处理机制

RDD 是一种特殊的集合,具有数据容错机制,数据恢复

因为Spark框架处理任何数据,都要先数据封装到RDD里,在针对RDD计算

创建RDD的两种方式

1 将一个普通集合(Array和list)转化RDD

2 读取文件数据,将文件数据变RDD

 

RDD特点

  1. 只读不可改
  2. 元素可以为键值对或其他数据
  3. 函数包括转换Transformations和动作Actions 两类
  4. 可基于HDFS文件,本地文件,并行集合,JSON文件等多种方式创建
  5. 延迟计算(懒加载): 转换不执行计算,动作才执行计算;运行时优化提高性能

map和flatMap有何不同?
map: 对RDD每个元素转换
flatMap: 对RDD每个元素转换, 然后再扁平化(即去除集合)
所以,一般我们在读取数据源后,第一步执行的操作是flatMap

 

RDD操作  --总分两大类

1 变换操作  Tranesformation  都会懒操作,即并不是马上真正的触发计算  ,每执行一次懒操作,都会生成新的RDD

2 执行操作  Action   有  collect   .glom.collect

 

RDD基本命令

 groupByKey对于数据格式是有要求的,即操作的元素必须是一个二元tuple,

reduceByKey操作的数据格式必须是一个二元tuple

 


WordCount

    sc上下文调用textFile方法打开HDFS上的文件
    flatMap按空格全部切割后返回字符串集合
    map将每个字符串加入元组(单词,1)
    reduceByKey完成按key分组后的值累加操作
    sortBy按值降序排序,完成wordcount
    collect将RDD转为集合的动作函数,此时执行计算,最终foreach打印所有元素

 

sc.textFile("hdfs://ghym:9000/word.txt").flatMap(_.split("\\s+")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).collect.foreach(println)
.flatMap(_.split(" ")).map{(_,1)}.reduceByKey(_+_)
## 案例:通过rdd实现统计文件中的单词数量
sc.textFile("/root/work/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("/root/work/wcresult")

 

 

 

 

DAG记录RDD之间的依赖关系,RDD可以实现数据的容错(数据可以恢复),即当于RDD某个分区数据丢失,通过关系恢复

RDD的依赖关系:

窄依赖:父分区和子分区是一对一    生成方法:map   flatMap   fiter union

宽依赖:父分区和子分区是一对多   生成方法:  groupByKey     reduceByKey

宽依赖指的是多个子RDD的Partition会依赖同一个parent RDD的Partition,会产生shuffle

 

Stage本质上一组Task的集合

Task对应分区,一个分区对应一个Task,即Spark处理任务是处理分区数据

Task有两大类: MapTask  ()  ResultTask

 

Spark有两种Shuffle Manager:         Hash  Based Shuffle Manager     Sort  based Shuffle Manager

RDD有两种缓冲机制:cache  只有一种    persist  有多种

针对RDD的缓存级别:

1    memory_only   (cache   persist)

2,  memory_and_disk

3   memory_only_ser  等等

 

 

 

内存的分配建议:

比如服务器内存64G  建议分配一半,32G以上 

注意,还要为操作系统留10GB以内

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值