| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Spark中的RDD相关 -> 正文阅读 |
|
[大数据]Spark中的RDD相关 |
Spark中RDD的概念:????????RDD的英文全名是Resilient Distributed Dataset,直译就是弹性分布式数据集。 ????????RDD是一个不可变的分布式对象集合,每个RDD都被分为多个分区,这些分区运行在集群的不同节点上。 ????????很多资料里只有这么一句粗浅的解释,看起来说了很多,但是我们都get不到。细想有很多疑问,最后我在大神的博客里找到了详细的解释,这位大神翻了spark的源码,找到了其中RDD的定义,一个RDD当中包含以下内容:
如何创建RDD:????????SparkContext是整个spark的入口,相当于程序的main函数。在我们启动spark的时候,spark已经为我们创建好了一个SparkContext的实例,命名为sc,我们可以直接访问到。 我们要创建RDD也需要基于sc进行,比如下面创建一个有字符串构成的RDD: ????????对于已有集合可以通过parallelize函数进行初始化创建RDD:
?????????也可以通过读取外部文件进行操作:
?RDD中的转化操作和行动操作:????????RDD支持两种操作,一种叫做转化操作(transformation)一种叫做行动操作(action) 转化操作????????执行转化操作的时候,spark会将一个RDD转化成另一个RDD。RDD中会将我们这次转化的内容记录下来,但是不会进行运算。所以我们得到的仍然是一个RDD而不是执行的结果。 ? ? ? ? filter() ????????比如我们创建了texts的RDD之后,我们想要对其中的内容进行过滤,只保留长度超过5的,我们可以用filter进行转化:
????????我们调用之后得到的也是一个RDD,就像我们刚才说的一样,由于filter是一个转化操作,所以spark只会记录下它的内容,并不会真正执行。 ? ? ? ? map() ? ? ? ? 接收一个函数,然后把这个函数用于RDD中的每个元素,将函数的返回结果作为结果RDD中对应元素的值,不将其扁平化 ? ? ? ? flatMap() ? ? ? ? 将函数用于所有RDD,并且将其扁平化 ? ? ? ? 伪集合操作: ? ? ? ? distinct() ? ? ? ? 保证RDD中的元素唯一 ? ? ? ? Union() ? ? ? ? 将两个RDD进行并集操作 ????????intersection() ? ? ? ? 将两个RDD取交集 行动操作:collect()操作:返回RDD中的所有元素 count()操作:返回RDD中的元素个数 countByValue()操作:个元素在RDD中的出现次数 take()操作:取几个元素出来 top()操作:从RDD中返回最前面的NUM个元素 reduce()操作:给reduce传递一个函数作为参数,rdd.reduce((x,y)=>x+y)? ? {1,2,3,3} =>9 fold()操作:给fold传递一个函数作为参数,同时对其进行初始化操作 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/22 9:10:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |