rdd数据存内存 数据量_spark系列:spark core 数据交互技术点(数据模型)
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共享变量
- 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 数据交互技术点(数据模型)相关推荐
- rdd数据存内存 数据量_Spark 性能优化(二)——数据倾斜优化
1.2 数据倾斜优化 1.2.1 为何要处理数据倾斜(Data Skew) 什么是数据倾斜?对 Spark/Hadoop 这样的大数据系统来讲,数据量大并不可怕,可怕的是数据倾斜. 何谓数据倾斜?数据 ...
- rdd数据存内存 数据量_「大数据」(七十七) Spark之IO机制
[导读:数据是二十一世纪的石油,蕴含巨大价值,这是·情报通·大数据技术系列第[77]篇文章,欢迎阅读和收藏] 1 基本概念 与传统的 IO 相比, Spark IO 有很大区别.传统的数据存在单个计算 ...
- rdd数据存内存 数据量_大数据开发-Spark调优常用手段
Spark调优 spark调优常见手段,在生产中常常会遇到各种各样的问题,有事前原因,有事中原因,也有不规范原因,spark调优总结下来可以从下面几个点来调优. 1. 分配更多的资源 分配更多的资源: ...
- rdd数据存内存 数据量_超全spark性能优化总结
Spark是大数据分析的利器,在工作中用到spark的地方也比较多,这篇总结是希望能将自己使用spark的一些调优经验分享出来. 一.常用参数说明 --driver-memory 4g : drive ...
- with as 语句真的会把数据存内存嘛?(源码剖析)
with as常见问题,大概有两类: 1.为啥我用了with..as效率没有提高? 2.sql跑不动,改成with..as的写法,会不会更好些? 网上博客几乎都有结论with ... as语句会把数据 ...
- 分析股票大数据_Python大数据分析量学祖师爷网站数据
本文通过Python抓取股海明灯涨停预报数据进行分析,股海明灯网站涨停预报数据跟踪 功能是需要VIP权限,但这个权限分析数据的功能有限,我们抓取数据后丰富相关功能. 一. 点击涨停预报后打开以下页面. ...
- matlab导入大数据时内存不足,MATLAB从Excel导入大量数据计算的时候出现错误
function y = landslidepj(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11) %UNTITLED 滑坡易发性评价 % 模糊综合评价对栅格单元进行评价,x ...
- 【大数据新手上路】“零基础”系列课程--MySQL 数据整库迁移到 MaxCompute
随着公司业务的增多,云数据库 RDS 下的 MySQL 数据库的表越来越多,想要把它全部迁移到 MaxCompute 中进行计算分析,但又愁要配置太多次同步任务.如何能将大量的数据表一次性上传到 Ma ...
- python爬虫数据存储文本_Python爬虫开发系列之五》数据存储为TXT、JSON格式
在上一篇中我们介绍了Beautiful Soup解析库的使用方法,用解析出数据之后,接下来就是存储数据的问题了.数据保存的方式多种多样,最简单的形式是直接保存成文本文件,比如txt/json/csv. ...
最新文章
- 根据API创建BOM(Itpub)
- Welcome email
- java 采集rtsp_通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口步骤概览
- YbtOJ#20240-[冲刺NOIP2020模拟赛Day10]弱者对决【笛卡尔树,区间dp】
- 北京重磅发布:杰青、优青放宽女性年龄限制,基金人才评审“同等条件下女性优先”...
- 【英语学习】【Level 07】U03 Amazing wonders L3 A pearl of East Asia
- 开放式可编程保险市场Tidal Finance完成由KR1领投的195万美元种子轮融资
- python 知乎 合并 pdf_32.使用selenium爬取知乎,并实现多页保存为一个PDF文件
- 给妹子讲python-S01E05字符串的基本用法详解
- 今天发现的好几个PP文字,不敢独享,gaga
- 对数组操作[:,:4]
- [论文评析]ArXiv,2021, CrossFormer技术分析
- 分布式架构在云计算平台中的应用及优缺点
- 模型预测控制(MPC)简介
- 一行数据顺序改变函数matlab,MATLAB中的排序函数
- AI中的图像识别技术的原理及过程
- 802.1x协议身份认证
- 13个医学图像 AI 入门项目- 都跑完你就超神了!
- [PTA] 第四章 题解
- Mac如何保护苹果账户的安全?保护 Apple ID 帐户的技巧分享