spark core实现了spark的基本功能:存储交互、任务调度、内存管理、错误恢复等;本片文章主要介绍与数据交互相关的核心技术点。

本文目录:

  • RDD特性及交互
  • shuffle操作及调优
  • RDD持久化的应用
  • Broadcast Variables&Accumulators共享变量的优势及应用场景
  • 下篇预告

RDD特性及交互

弹性分布式数据集(resilient distributed dataset),具备只读、可并行计算、容错性等三个主要特性。

可以由hdfs文件(包含hbase等各类以hdfs为基础的数据源)或者scala集合来创建RDD。

针对RDD,spark提供了两种类型的操作算子:transformations、action

  • transformations

主要是基于已有的RDD创建新的RDD,transformations类操作具有惰性(lazy),仅当遇见action操作需要结果时才执行,这个特性也是spark更加高效的原因之一。默认情况下,每一次action都会触发与之相关的transformations,如果一个rdd会多次使用,建议进行持久化或者缓存。

transformations算子

  • action

是将在rdd上计算的将结果传给driver program。Job就是根据action算子划分的

action算子

Shuffle

指的是会引起数据的重分布的操作(re-distributing data);比如:repartition、coalesce、ByKey的操作以及join类别的操作,如:cogroup、join等。stage救赎根据shuffle算子划分的

shuffle操作需要大量的IO、网络IO以及序列化等操作,比较耗资源。

比较老的spark版本采用hash based shuffle(现在以及弃用)方式进行shuffle。举例:3个 map task, 3个 reducer, 会产生 9个小文件,

hash based shuffle

比较新的spark版本采用Consolidated HashShuffle:4个map task, 4个reducer, 如果不使用 Consolidation机制, 会产生 16个小文件。但是但是现在这 4个 map task 分两批运行在 2个core上, 这样只会产生 8个小文件。

Consolidated HashShuffle

shuffle调优方式

  • 合理的设置partition数目
  • 防止数据倾斜
  • 合理配置一些参数,如excutor的内存,网络传输中数据的压缩方式,传输失败的重试次数等。

RDD 持久化

当一个RDD会重复使用时,可以选择持久化来缩短任务执行时间。(但如果数据量不是太大,重新生成RDD的时间消耗小于从磁盘或内存加载的时间时,就不宜持久化)

spark自动管理持久化之后的数据,会结合least-recently-used (LRU)算法删除数据。

持久化有如下几种方式:

RDD持久化

Broadcast Variables&Accumulators共享变量

  1. Broadcast Variables

针对只读变量的数据共享机制。以比较高效的方式将只读变量共享到所有机器上,当然使用普通变量也能达到类似的效果,但Broadcast类型的变量更加高效,主要具有以下优点。

  • broadcast类型变量可以保证只在executor的内存中存在一份,只需要发送一次。普通变量每个task都会发生一次数据传输。
  • 将要传输的变量不需要实现Serializable接口
  • 可以高效地传输较大的数据集

2. Accumulators

可以理解为一个只能进行加法操作的变量,spark有一些内置类型,如:longAccumulator、doubleAccumulator,用户也可自定义。Task在执行过程中只能调用其add方法,但是不能获取到他的值。只有Driver Progeam可以获取到它的值。常用的场景有计数、求和等。 示例:

val accum = sc.longAccumulator("My Accumulator")

sc.parallelize(Array(1, 2, 3, 4)).foreach(x => accum.add(x))

accum.value

下篇预告

下篇将会介绍spark core的任务调度与容错机制

相关文章:

spark系列:spark生态组件与应用场景

ES系列:elasticsearch的功能及Top 5大应用场景

ES系列:集群、索引、搜索配置优化方案

ES系列:elasticsearch数据的存储结构

es系列:集群分布式架构及原理

ES系列:elasticsearch基础知识汇总及常见面试题(一)

rdd数据存内存 数据量_spark系列:spark core 数据交互技术点(数据模型)相关推荐

  1. rdd数据存内存 数据量_Spark 性能优化(二)——数据倾斜优化

    1.2 数据倾斜优化 1.2.1 为何要处理数据倾斜(Data Skew) 什么是数据倾斜?对 Spark/Hadoop 这样的大数据系统来讲,数据量大并不可怕,可怕的是数据倾斜. 何谓数据倾斜?数据 ...

  2. rdd数据存内存 数据量_「大数据」(七十七) Spark之IO机制

    [导读:数据是二十一世纪的石油,蕴含巨大价值,这是·情报通·大数据技术系列第[77]篇文章,欢迎阅读和收藏] 1 基本概念 与传统的 IO 相比, Spark IO 有很大区别.传统的数据存在单个计算 ...

  3. rdd数据存内存 数据量_大数据开发-Spark调优常用手段

    Spark调优 spark调优常见手段,在生产中常常会遇到各种各样的问题,有事前原因,有事中原因,也有不规范原因,spark调优总结下来可以从下面几个点来调优. 1. 分配更多的资源 分配更多的资源: ...

  4. rdd数据存内存 数据量_超全spark性能优化总结

    Spark是大数据分析的利器,在工作中用到spark的地方也比较多,这篇总结是希望能将自己使用spark的一些调优经验分享出来. 一.常用参数说明 --driver-memory 4g : drive ...

  5. with as 语句真的会把数据存内存嘛?(源码剖析)

    with as常见问题,大概有两类: 1.为啥我用了with..as效率没有提高? 2.sql跑不动,改成with..as的写法,会不会更好些? 网上博客几乎都有结论with ... as语句会把数据 ...

  6. 分析股票大数据_Python大数据分析量学祖师爷网站数据

    本文通过Python抓取股海明灯涨停预报数据进行分析,股海明灯网站涨停预报数据跟踪 功能是需要VIP权限,但这个权限分析数据的功能有限,我们抓取数据后丰富相关功能. 一. 点击涨停预报后打开以下页面. ...

  7. matlab导入大数据时内存不足,MATLAB从Excel导入大量数据计算的时候出现错误

    function y = landslidepj(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11) %UNTITLED 滑坡易发性评价 %   模糊综合评价对栅格单元进行评价,x ...

  8. 【大数据新手上路】“零基础”系列课程--MySQL 数据整库迁移到 MaxCompute

    随着公司业务的增多,云数据库 RDS 下的 MySQL 数据库的表越来越多,想要把它全部迁移到 MaxCompute 中进行计算分析,但又愁要配置太多次同步任务.如何能将大量的数据表一次性上传到 Ma ...

  9. python爬虫数据存储文本_Python爬虫开发系列之五》数据存储为TXT、JSON格式

    在上一篇中我们介绍了Beautiful Soup解析库的使用方法,用解析出数据之后,接下来就是存储数据的问题了.数据保存的方式多种多样,最简单的形式是直接保存成文本文件,比如txt/json/csv. ...

最新文章

  1. 根据API创建BOM(Itpub)
  2. Welcome email
  3. java 采集rtsp_通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口步骤概览
  4. YbtOJ#20240-[冲刺NOIP2020模拟赛Day10]弱者对决【笛卡尔树,区间dp】
  5. 北京重磅发布:杰青、优青放宽女性年龄限制,基金人才评审“同等条件下女性优先”...
  6. 【英语学习】【Level 07】U03 Amazing wonders L3 A pearl of East Asia
  7. 开放式可编程保险市场Tidal Finance完成由KR1领投的195万美元种子轮融资
  8. python 知乎 合并 pdf_32.使用selenium爬取知乎,并实现多页保存为一个PDF文件
  9. 给妹子讲python-S01E05字符串的基本用法详解
  10. 今天发现的好几个PP文字,不敢独享,gaga
  11. 对数组操作[:,:4]
  12. [论文评析]ArXiv,2021, CrossFormer技术分析
  13. 分布式架构在云计算平台中的应用及优缺点
  14. 模型预测控制(MPC)简介
  15. 一行数据顺序改变函数matlab,MATLAB中的排序函数
  16. AI中的图像识别技术的原理及过程
  17. 802.1x协议身份认证
  18. 13个医学图像 AI 入门项目- 都跑完你就超神了!
  19. [PTA] 第四章 题解
  20. Mac如何保护苹果账户的安全?保护 Apple ID 帐户的技巧分享

热门文章

  1. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第2章-连通性保持条件下多智能体系统群集运动控制
  2. 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第9章-结论与展望
  3. STM32 电机教程 6 - 步进电机转动控制
  4. STM32 进阶教程 7 -  C与C++混合编程
  5. STM32 SPI NSS 引脚为不能拉高问题
  6. 解决HierarchyViewer不能连接真机的问题
  7. ubuntu常用小工具
  8. 白话tensorflow分布式部署和开发
  9. Django Rest Framework
  10. 大数据玩家们对2013年趋势的预测