第3章 Spark编程基础

从文件加载数据

从文件系统中加载数据创建RDD——textFile()方法,该方法把文件的URI作为参数
注意:
(1)本地文件系统的路径,必须要保证在所有的worker节点上都有该文件。
(2)textFile()方法的输入参数,可以是文件名,也可以是目录,也可以是压缩文件等。比如,textFile(“/my/directory”), textFile(“/my/directory/.txt”), and textFile(“/my/directory/.gz”).
(3)textFile()方法也可以接受第2个输入参数(可选),用来指定分区的数目。默认情况下,Spark会为HDFS的每个block创建一个分区(HDFS中每个block默认是128MB)。可以提供一个比block数量更大的值作为分区数目,但是,不能提供一个小于block数量的值作为分区数目

操作

转换操作

  • filter(func):筛选出满足函数func的元素,并返回一个新的数据集
    eg:

  • map(func):将每个元素传递到函数func中,并将结果返回为一个新的数据集
    eg:每一次迭代返回一个迭代器

  • flatMap(func):与map()相似,但每个输入元素都可以映射到0或多个输出结果
    eg : 最后只返回一个迭代器,相对于对map的结构再进行扁平化

  • groupByKey():应用于(K,V)键值对的数据集时,返回一个新的(K, Iterable)形式的数据集
    eg: 将相同的key放在一起,v构成一个list

  • reduceByKey(func):应用于(K,V)键值对的数据集时,返回一个新的(K, V)形式的数据集,其中的每个值是将每个key传递到函数func中进行聚合
    eg: 相同key进行计算,函数参数必须

行动操作

  • count() 返回数据集中的元素个数
  • collect() 以数组的形式返回数据集中的所有元素
  • first() 返回数据集中的第一个元素
  • take(n) 以数组的形式返回数据集中的前n个元素
  • reduce(func) 通过函数func(输入两个参数并返回一个值)聚合数据集中的元素
  • foreach(func) 将数据集中的每个元素传递到函数func中运行

持久化

  • persist
    persist()方法对一个RDD标记为持久化,之所以说“标记为持久化”,是因为出现persist()语句的地方,并不会马上计算生成RDD并把它持久化,而是要等到遇到第一个行动操作触发真正计算以后,才会把计算结果进行持久化,持久化后的RDD将会被保留在计算节点的内存中被后面的行动操作重复使用。
    一般而言,使用cache()方法时,会调用persist(MEMORY_ONLY)
    -unpersist
    unpersist()方法手动地把持久化的RDD从缓存中移除

分区

RDD分区的一个分区原则是使得分区的个数尽量等于集群中的CPU核心(core)数目
spark.default.parallelism这个参数的值,来配置默认的分区数目,一般而言:
*本地模式:默认为本地机器的CPU数目,若设置了local[N],则默认为N;
*Apache Mesos:默认的分区数为8;
*Standalone或YARN:在“集群中所有CPU核心数目总和”和“2”二者中取较大值作为默认值;

键值对操作

reduceByKey(func)
groupByKey()
keys()
values()
sortByKey()
mapValues(func)
join

共享变量

需要在多个任务之间共享变量,或者在任务(Task)和任务控制节点(Driver Program)之间共享变量

广播变量

广播变量(broadcast variables)允许程序开发人员在每个机器上缓存一个只读的变量,而不是为机器上的每个任务都生成一个副本。
通过调用SparkContext.broadcast(v)来从一个普通变量v中创建一个广播变量。这个广播变量就是对普通变量v的一个包装器,通过调用value方法就可以获得这个广播变量的值

累加器

累加器是仅仅被相关操作累加的变量,通常可以被用来实现计数器(counter)和求和(sum)
SparkContext.accumulator()来创建。运行在集群中的任务,就可以使用add方法来把数值累加到累加器上,但是,这些任务只能做累加操作,不能读取累加器的值,只有任务控制节点(Driver Program)可以使用value方法来读取累加器的值

林子雨-Spark入门教程(Python版)-学习笔记(二)相关推荐

  1. 林子雨-Spark入门教程(Python版)-学习笔记(一)

    第1章 Spark的设计与运行原理 简介 hadoop中计算框架MapReduce的缺点: 表能能力有限,计算都必须要转化成Map和Reduce两个操作,难以表示复杂场景 IO开销大,中间结果写入到磁 ...

  2. 【台大郭彦甫】Matlab入门教程超详细学习笔记二:基本操作与矩阵运算(附PPT链接)

    Matlab入门教程超详细学习笔记二:基本操作与矩阵运算 前言 一.基本操作 1.把matlab当作计算器使用 2.变量 3.控制格式输出 二.矩阵运算 1.矩阵 2.矩阵索引 3.使用:创建向量 4 ...

  3. Spark入门(Python版)

    Hadoop是对大数据集进行分布式计算的标准工具,这也是为什么当你穿过机场时能看到"大数据(Big Data)"广告的原因.它已经成为大数据的操作系统,提供了包括工具和技巧在内的丰 ...

  4. pythonsparkpickle_Learning Spark (Python版) 学习笔记(一)----RDD 基本概念与命令

    <Learning Spark>这本书算是Spark入门的必读书了,中文版是<Spark快速大数据分析>,不过豆瓣书评很有意思的是,英文原版评分7.4,评论都说入门而已深入不足 ...

  5. 一个非常棒的Unity入门教程(附上学习笔记)

    非常适合入门的unity教程,知识点全面,声音清晰,基本没有废话,时间控制得当,UP主Michael还在更很多其他的unity相关教程 视频教程地址:https://www.bilibili.com/ ...

  6. 1算法分析——数据结构与算法Python版学习笔记

    什么是算法分析? 计算资源指标:一种是算法解决问题过程中需要的储存空间或内存,另一种是算法的执行时间 运行时间检测 time模块,获取计算机系统当前时间 例如: 方法一:累计求和程序的运行时间检测 i ...

  7. 【台大郭彦甫】Matlab入门教程超详细学习笔记七:数值微积分(附PPT链接)

    数值微积分 前言 一.多项式微积分 1. 多项式计算 2. 多项式微分 3. 多项式积分 二.数值微积分 1. 数值微分法 2. 高阶微分法 3. 数值积分法 三.回顾Function Handles ...

  8. 【台大郭彦甫】Matlab入门教程超详细学习笔记五:初阶绘图(附PPT链接)

    初阶绘图 前言 一.基础绘图 1.plot() 绘制二维线图 2.legend()添加图例 3.title()和*label()添加标题与坐标轴 4.text()和annotation()增加注解 二 ...

  9. 【台大郭彦甫】Matlab入门教程超详细学习笔记六:高阶绘图(附PPT链接)

    高阶绘图 前言 一.进阶二维绘图 1. 对数图 2.一图双y轴 3. 直方图 4. 条形图 5. 饼状图 6. 极坐标图 7. 阶梯图与取样图 8. 箱线图以及误差线图 9. 填充图 二.配色 1.R ...

最新文章

  1. 请把我不会,换成我可以学
  2. [Tyvj 1729] 文艺平衡树
  3. android 代码设置textview draw,Android 自定义气泡TextView
  4. MTK驱动(53)---平台DTS文件匹配过程
  5. 多物理场面向对象模拟环境MOOSE学习手册
  6. Affymetrix基因芯片小总结
  7. 如何使用Scylla进行OSINT信息收集
  8. 【硬缸·EP2.0】MOSFET的特性与选择
  9. 彩虹QQ查看对方ip原理
  10. 规模再创新高!新能源汽车蓝海谁主沉浮
  11. Dynamics AX2012 General ledger
  12. nyoj-234-吃土豆(动态规划)
  13. 【大咖有约】子衿技术团队徐戟:DBA职场进阶之路
  14. 超搜索引擎BBMAO
  15. Web 字体应用指南最佳实践修炼之道(上)
  16. allegro 进行outline倒角
  17. Odoo与浪潮合资研发PS Cloud之如何在Odoo中进行搜索引擎优化(5)
  18. iOS真机调试TestFlight安装及提交App Store审核教程
  19. USB2.0端口设备静电防护方案设计压敏电阻或TVS管
  20. 个性彰显时代的轻博客8090S

热门文章

  1. 密码学在实际应用中的加密技术
  2. 程序员如何摆脱35岁技术泥潭?
  3. xmos固件u8_有福啦~XMOS固件更新啦~
  4. 图像边缘锯齿及处理方法
  5. css股票曲线图图解,如何看懂股票曲线图,一文搞懂这些曲线所代表的含义!
  6. 【JavaSE 第八天】
  7. UE4(一):游戏起点流程图
  8. 第八篇 uCGUI的移植
  9. index.jsp模板(约束)
  10. 去字节面试,直接让人出门左拐:Bean 生命周期都不知道!