寒假记录六

今天完成了实验任务四-RDD编程初级实践,先在网上查了一下资料。

Spark大数据处理的核心是RDD,RDD的全称为弹性分布式数据集,对数据的操作主要涉及RDD的创建、转换以及行动等操作,在Spark系列(二)中主要介绍了RDD根据SparkContext的textFile创建RDD的方法,本小节将介绍RDD编程之转换(Transform)和行动(Action)两种操作。

RDD是分布式数据集的抽象

RDD是不可变的数据集合,每个RDD都被分成多个分区,这些分区运行在集群中的不同节点上。其中,RDD主要支持转换和行动操作,转换操作会生成一个新的RDD,而行动操作会对RDD计算一个结果,通常为一个数值类型,比如加和。区别这两种操作的方式在于Spark的惰性计算的计算机制。

惰性计算

在RDD进行转换操作时并不会真的进行计算,虽然在逻辑上进行转换操作会生成新的RDD,但是事实上进行转换操作并不会真的计算出新的RDD,它只会记住一串完整的转换操作链,然后在第一次行动操作操作时真正的计算,获得足够真实的数据。

即便是RDD的创建,如果在rdd = sc.textFile(...)时就把文件中所有行都读取进来并且保存下来会消耗掉很多的存储空间,在之后的转换操作过程中可能又会过滤、重构RDD,显然这是没有必要的。这也是RDD为什么能够快速进行大数据分析的原因。但是Spark 也会有犯傻的时候,默认情况下,Spark 的 RDD 会在每次对它们进行行动操作时重新计算,当然可以人为在多个行动操作中共用一个RDD,将RDD持久化,将RDD缓存到内存中,以分区的形式存储在集群中的各机器上,当然也可以将RDD持久化到磁盘上。利用persist()可以将RDD持久化,通过持久化的级别来控制RDD缓存到内存中还是磁盘上。

转化操作

转换操作返回的是一个新的RDD,转换出来的RDD是惰性求值的,通过转换操作,从已有的RDD转换为新的RDD的过程会生成谱系图(lineage graph)来记录RDD之间的依赖关系,根据这个lineage graph按需计算RDD,并且能在RDD部分数据丢失时进行恢复。

常用的转换操作:filter,map,foreach,mapPartition,foreachPartition

行动操作

行动操作把最终求得的结果返回到驱动器程序,或者写入外部存储系统中。由于行动操作需要生成实际的输出,它

们会强制执行那些求值必须用到的RDD的转化操作。

常用的行动操作:count,reduce,reduceByKey,take

原文地址:https://www.cnblogs.com/baixiaoli/p/12268490.html

时间: 2024-10-09 17:38:59

寒假记录六的相关文章

ASP.net中的AJAX学习记录六 无刷新的数据编辑(GridView和DetailsView结合实例)(转)

本篇博客是仿照书中实例,实现GridView和DetailsView结合无刷新的数据编辑效果,页面效果:当点击GridView1的行或换页时,都会引发DetailsView1的数据绑定显示至页面,同时当使用DetailsView1编辑.删除.添加时,也会引起GridView1的重新绑定,整体页面实现无刷新. 页面布局: 1.新建AJAX窗口,命名为:"NoRefreshEdit.aspx".要想实现页面无刷新编辑,就必须使用两个Updatepanel. 2.在NoRefreshEdit

2020 寒假记录(一)

2020 冬 寒假记录(一) 费解的开关 https://vijos.org/p/1197 当第 \(i\) 行的状态确定了之后,只有第 \(i+1\) 行可以影响它,也就是翻完第一行后,后面每一行的操作也就是确定的了,所以枚举第一行的32种状态即可. 深搜 #include <iostream> #include <algorithm> #include <cstdio> using namespace std; int dir[4][2] = { {0,-1},{0

寒假记录十二

Sqoop概述 Sqoop是一款开源的工具,主要用于在Hadoop生态系统(Hadoop.Hive等)与传统的数据库(MySQL.Oracle等)间进行数据的传递,可以将一个关系型数据库中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中. Sqoop导入原理: 在导入开始之前,Sqoop使用JDBC来检查将要导入的表.他检索出表中所有的列以及列的SQL数据类型.这些SQL类型(varchar.integer)被映射到Java数据类型(String.Integer等

寒假第六周 2.15 --- 2.21

新的一周^w^ 2.15 hdu Greedy Tino n个w[i],问能否分成相等的两堆,使得每一堆尽量大 不懂,题解说的是双塔dp dp[i][j] 表示前i个搭成两个塔,差值为 j 的,这两个塔的高度的最大和 dp[i+1][j-v] = max(dp[i+1][j-v],dp[i][j]+v) //放在较高的那个塔上 dp[i+1][j+v] = max(dp[i+1][j+v],dp[i][j]+v)//放在较矮的那个塔 dp[i+1][j] = max(dp[i+1][j],dp[

mysql基础-数据库多表查询-记录(六)

0x01 MySQL多表查询和子查询 联结查询:事先将两张或者多张表join,根据join的结果进行查询 cross join:交叉联结  用的少, 相当于 (a+b)*(c+d+e) 所得结果的形式   用的少 自然联结  --- 只能在两者相等的情况下才能建立连接 等值联结:把相同的字段进行等值连接 外联结: 左外联接:只保留出现在左外连接元算之前(左边)的关系中的元组(以左表为准,) left_tb LEFT JOIN right_tb ON 条件 右外联接:只保留出现在右外连接元算之后(

zeromq学习记录(六)C语言示例

考虑到官方的示例c语言是最多的 后面可能有些例子就使用VC编译C语言例子 /************************************************************** 技术博客 http://www.cnblogs.com/itdef/ 技术交流群 群号码:324164944 欢迎c c++ windows驱动爱好者 服务器程序员沟通交流 **************************************************************

Oracle学习记录 六 又一本学习资料练习

学习过最简单的几种语句了,也安装过了几次数据库,本来在看那个高级编程的,但是还有一本入门的没看,就先看了再说, 多练习,熟悉掌握最基本的操作. 我以前登录的时候都是用conn回车,然后再输入密码,这个文档第一个就介绍了另一种登录方法. conn scott/xx 这样就直接登录了,/前是用户名,/后是密码 conn sys/xx as sysdba 这个就是用管理员登录 2. 然后是把刚才输入的sql保存成文件用.sql后缀 select * from emp; save /home/oracl

TMS320F28035学习记录六

1.TMS320F28035的引脚绝对不能输入5V的电压,当引脚内部上拉或下拉时,会产生100uA的电流,这个参数在低功耗设计中会很有用,说明上拉下拉设置是不好随便来的.所有具有输出功能的引脚,其输出缓冲器驱动能力的典型值是4mA,这样是比51或M3内核的控制器的引脚驱动能力弱很多的. 2.TMS320F28035工作电压分为两部分:3.3V的Flash电压和1.8V的内核电压. 3.在AD采样过程中,当AD采样端口悬空时,采集进来的值是随机值,所以没有用到的AD端口建议接地. 4.影响ADC采

18寒假第六测

第一题:乘法修改的线段树 一定不能将change,modify分类讨论定两个标记,会有顺序影响 lazy标记一定要long long,又忘了... 代码和上一次差不多 第二题:离散暴力,也可以扫描线 离散时要将格子映射成点,不然会出现以下情况: 算横着的小矩形宽就是2,算黄色面积宽还是2,因为没有2让3去减 如果映射成点,就像这样,,放图比较好理解,就像扫描线,一个叶子节点存的是一个左闭右开的区间 也可以离散+扫描线,但还没写出来 #include <bits/stdc++.h> using