sparkRdd driver和excuter
//1 从内存中创建makeRdd,底层实现就是parallelize
val rdd=sc.makeRDD(Array(1,2,"df",55)) //2 从中创建parallelize
val paraRdd=sc.parallelize(Array(1,2,3,54,5)) //3 从外部存储中创建
// 默认情况下,可以读取项目路劲,也可以读取其他路劲如hdfs
// 默认从文件中读取数据都是字符串类型
// 读取文件时,传递的分区参数为最小分区数,但不一定是这个分区数,取决与hadoop读取文件时的分片规则
val fileRdd=sc.textFile("path",2)
mapParitions的优缺点:
mapParitions可以对一个RDD中所有的分区进行遍历
mappartitions.效率优于map算子,减少了发送到执行器执行交互次数
mappartitions内存溢出是当一个分区数据过大,发送时执行的exctuer可能放不下,出现OOM
mapPartitionsWithIndex:
val listRdd = sc.makeRDD(1 to 10,2)
val indexRdd = listRdd.mapPartitionsWithIndex({
case (num, datas) => {
datas.map((_, "分区号:" + num))
}
}) indexRdd.foreach(println(_))
/**
*
* (6,分区号:1)
(1,分区号:0)
(7,分区号:1)
(2,分区号:0)
(8,分区号:1)
(3,分区号:0)
(9,分区号:1)
(10,分区号:1)
(4,分区号:0)
(5,分区号:0)
*/
driver和excuter:
代码分布:
上述代码执行没有问题,i可序列化。执行时会将i传输到excuter上,传输就牵扯io,就需要序列化。所以需要传输的内容必须能够序列化,否则就会报错。
val rdd3 = sc.makeRDD(List(1, 32, 3, 4, 5))
rdd3.foreach({
case i => {
println(i * 2) //Executor
}
}) rdd3.collect().foreach({
case i => {
println(i * 2) //Driver,collect后是一个数组,相当与把数据拿到driver中进行计算
}
})
glom将同一个分区的数据放到一个数组中
val rdd1 = sc.makeRDD(1 to 10,3)
val glomRddArr:RDD[Array[Int]] = rdd1.glom()
glomRddArr.foreach(arr=>{
val str = arr.mkString(",")
println(str)
})
/**
* 4,5,6
1,2,3
7,8,9,10
*/
shuffle操作
//将rdd中一个分区的数据打乱重组到其他不同分区的操作称为shuffle,如distinct
//rdd的操作牵扯到shuffle的算子效率就会降低。
val rdd2 = sc.makeRDD(1 to 10, 5)
//可以设置是否shuffle,默认是不shuffle。
// repairtition实际上默认是shuffle,底层是coalesce coalesce(num,shuffle=ture)
val coaRdd = rdd2.coalesce(2)
sparkRdd driver和excuter的更多相关文章
- hadoop学习之yarn资源管理
一.yarn简介 yarn是在hadoop2.x中才引入的一个新的机制,在hadoop1.x中MapReduce任务需要同时做任务管理和资源分配,那么引入yarn之后,hadoop的资源管理的任务就全 ...
- spark 大杂烩
累加器 val dataRdd = sc.makeRDD(List(1, 2, 3, 4), 2) var sum = 0 //累加器可以收集driver和各个excuter中累加的结果 //如果此处 ...
- 深入linux kernel内核配置选项
============================================================================== 深入linux kernel内核配置选项 ...
- sparkRDD:第3节 RDD常用的算子操作
4. RDD编程API 4.1 RDD的算子分类 Transformation(转换):根据数据集创建一个新的数据集,计算后返回一个新RDD:例如:一个rdd进行map操作后生了一个新的rd ...
- MongoDB Java Driver操作指南
MongoDB为Java提供了非常丰富的API操作,相比关系型数据库,这种NoSQL本身的数据也有点面向对象的意思,所以对于Java来说,Mongo的数据结构更加友好. MongoDB在今年做了一次重 ...
- c#操作MangoDB 之MangoDB CSharp Driver驱动详解
序言 MangoDB CSharp Driver是c#操作mongodb的官方驱动. 官方Api文档:http://api.mongodb.org/csharp/2.2/html/R_Project_ ...
- Java JDBC Thin Driver 连接 Oracle 三种方法说明(转载)
一.JDBC 连接Oracle 说明 JDBC 的应用连接Oracle 遇到问题,错误如下: ORA-12505,TNS:listener does not currently know of SID ...
- 设备模型(device-model)之平台总线(bus),驱动(driver),设备(device)
关于关于驱动设备模型相关概念请参考<Linux Device Drivers>等相关书籍,和内核源码目录...\Documentation\driver-model 简单来说总线(bus) ...
- AM335x tscadc platform driver 相关代码跟踪
TI AM335x ti am335x_tsc.c 代码跟踪 在kernel 首层目录: 先运行make ARCH=arm tags 这个作用是建立tags文件,只含有arm架构的,利用ctag即可进 ...
随机推荐
- Java 内存模型都不会,就敢在简历上写熟悉并发编程吗
从 PC 内存架构到 Java 内存模型 你知道 Java 内存模型 JMM 吗?那你知道它的三大特性吗? Java 是如何解决指令重排问题的? 既然CPU有缓存一致性协议(MESI),为什么 JMM ...
- Python基础篇_实例练习1
1.逢7跳过小游戏:从1-100之间,遇到带7的数字或者7的倍数跳过. for i in range(1,101): if i == 7 or i % 10 == 7 or i // 10 == 7: ...
- linux无文件执行— fexecve 揭秘
前言 良好的习惯是人生产生复利的有力助手. 继续2020年的flag,至少每周更一篇文章. 无文件执行 之前的文章中,我们讲到了无文件执行的方法以及混淆进程参数的方法,今天我们继续讲解一种linux上 ...
- CodeMixerPro工具,完美替代ChaosTool,iOS添加垃圾代码工具,代码混淆工具,代码生成器,史上最好用的垃圾代码添加工具,自己开发的小工具
新工具 ProjectTool 已上线 这是一款快速写白包工具,秒级别写H5游戏壳包,可视化操作,极易使用,支持Swift.Objecive-C双语言 扣扣交流群:811715780 进入 Proje ...
- Java基础 - 数据类型和运算符
Java 语言支持的类型分为两类:基本数据类型(Primitive Type)和引用类型(Reference Type). 目录 基本数据类型 数值类型 整数类型 byte short int lon ...
- Journal of Proteomics Research | 自动的、可重复的免疫多肽数据分析流程MHCquant
题目:MHCquant: Automated and reproducible data analysis for immunopeptidomics 期刊:Journal of Proteome R ...
- Hive视图如何创建、特点及应用场景
Hive视图特点 View是逻辑存在,Hive暂不支持物化视图(1.0.3) View只读,不支持LOAD/INSERT/ALTER.需要改变View定义,可以是用Alter View View内可能 ...
- Windows下用Python你会几种copy文件的方法?
1. [代码]1. os.system ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import os import temp ...
- apache 自带的ab.exe 测试网站的并发量(网站压力测试)
AB(ApacheBench) 是 Apache 自带的超文本传输协议 (HTTP) 性能测试工具. 其设计意图是描绘当前所安装的 Apache 的执行性能, 主要是显示 Apache 每秒可以处理多 ...
- python框架-Django创建项目
创建项目 django-admin startproject douban//创建project cd douban python manage.py startapp books//创建app项目 ...