我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Spark RDD常用算子是什么类型的

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Spark RDD常用算子是什么类型的

小编给大家分享一下Spark RDD常用算子是什么类型的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Spark RDD常用算子:Value类型

Spark之所以比Hadoop灵活和强大,其中一个原因是Spark内置了许多有用的算子,也就是方法。通过对这些方法的组合,编程人员就可以写出自己想要的功能。说白了spark编程就是对spark算子的使用,下面为大家详细讲解一下SparkValue类型的常用算子

Spark RDD常用算子是什么类型的

map

函数说明:

map() 接收一个函数,该函数将RDD中的元素逐条进行映射转换,可以是类型的转换,也可以是值的转换,将函数的返回结果作为结果RDD编程。

函数签名:

def map[U: ClassTag](f: T => U): RDD[U]

案例演示

   val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator")   val sc = new SparkContext(sparkConf)   //算子 -map   val rdd = sc.makeRDD(List(1, 2, 3, 4),2)   val mapRdd1 = rdd.map(     _*2   )   mapRdd1.collect().foreach(println)   sc.stop()

运行结果

2468

mapPartitons

函数说明:

将待处理的数据以分区为单位发送到待计算节点上进行处理,mapPartition是对RDD的每一个分区的迭代器进行操作,返回的是迭代器。这里的处理可以进行任意的处理。

函数签名:

def mapPartitions[U: ClassTag](f: Iterator[T] => Iterator[U],preservesPartitioning: Boolean = false): RDD[U]

案例演示

 def main(args: Array[String]): Unit = {   val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator")   val sc = new SparkContext(sparkConf)   //算子 -mapPartitons 计算每个分区的最大数   val rdd = sc.makeRDD(List(1, 34, 36,345,2435,2342,62,35, 4),4)   val mapParRdd = rdd.mapPartitions(     iter => {       List(iter.max).iterator     }   )   mapParRdd.foreach(println)   sc.stop() }

运行结果:

62243534345

mapPartitonsWithIndex

函数说明:

将待处理的数据以分区为单位发送到计算节点上,这里的处理可以进行任意的处理,哪怕是过滤数据,在处理的同时可以获取当前分区的索引值。

函数签名:

def mapPartitionsWithIndex[U: ClassTag](f: (Int, Iterator[T]) => Iterator[U],preservesPartitioning: Boolean = false): RDD[U]

案例演示:

  1. 将数据进行扁平化映射并且打印所在的分区数
def main(args: Array[String]): Unit = {   val conf = new SparkConf().setMaster("local[*]").setAppName("rdd")   val sc = new SparkContext(conf)   val rdd = sc.makeRDD(List("Hello Spark", "Hello Scala", "Word Count"),2)   val mapRDD = rdd.flatMap(_.split(" "))   val mpwiRdd = mapRDD.mapPartitionsWithIndex(     (index, datas) => {       datas.map(         num => {           (index, num)         }       )     }   )   mpwiRdd.collect().foreach(println) }

运行结果:

(0,Hello)(0,Spark)(1,Hello)(1,Scala)(1,Word)(1,Count)
  1. 将数据进行扁平化映射只打印所在第一分区的数据
def main(args: Array[String]): Unit = {   val conf = new SparkConf().setMaster("local[*]").setAppName("rdd")   val sc = new SparkContext(conf)   val rdd = sc.makeRDD(List("Hello Spark", "Hello Scala", "Word Count"),2)   val mapRDD = rdd.flatMap(_.split(" "))   val mpwiRdd = mapRDD.mapPartitionsWithIndex(     (index, datas) => {       if (index==0){         datas.map(           num => {             (index, num)           }         )       }else{       Nil.iterator       }     }   )   mpwiRdd.collect().foreach(println)

运行结果:

(0,Hello)(0,Spark)

flatMap

函数说明:

将数据进行扁平化之后在做映射处理,所以算子也称为扁平化映射

函数签名:

def flatMap[U: ClassTag](f: T => TraversableOnce[U]): RDD[U]

案例演示:

将每个单词进行扁平化映射

def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator") val sc = new SparkContext(sparkConf) //算子 -map val rdd = sc.makeRDD(List("Hello Scala","Hello Spark"), 2) val FltRdd = rdd.flatMap(   _.split(" ") ) FltRdd.foreach(println) sc.stop()}

运行结果:

HelloScalaHelloSpark

glom

函数说明:

glom的作用就是将一个分区的数据合并到一个array中。

函数签名:

def glom(): RDD[Array[T]]

案例演示:

  1. 将不同分区rdd的元素合并到一个分区
 def main(args: Array[String]): Unit = {   val conf = new SparkConf().setMaster("local[*]").setAppName("rdd")   val sc = new SparkContext(conf)   val rdd = sc.makeRDD(List(1, 2, 3, 4, 5, 6, 7, 8, 9),2)   val glomRdd = rdd.glom()   glomRdd.collect().foreach(data=>println(data.mkString(",")))   sc.stop() }

运行结果:

1,2,3,45,6,7,8,9

groupBy

函数说明:

将数据根据指定的规则进行分组,分区默认不变,单数数据会被打乱,我们成这样的操作为shuffer,

函数签名:

def groupBy[K](f: T => K)(implicit kt: ClassTag[K]): RDD[(K, Iterable[T])]

案例演示:

  1. 按照奇偶数进行groupby分区
 def main(args: Array[String]): Unit = {   val conf = new SparkConf().setMaster("local[*]").setAppName("rdd")   val sc = new SparkContext(conf)   val rdd = sc.makeRDD(List(1, 2, 3, 4, 5, 6, 7, 8,10),2)   val groupByRDD = rdd.groupBy(_ % 2 == 0)   groupByRDD.collect().foreach(println)   sc.stop() }

运行结果:

(false,CompactBuffer(1, 3, 5, 7))(true,CompactBuffer(2, 4, 6, 8, 10))
  1. 按照单词的首字母进行分组
 def main(args: Array[String]): Unit = {   val conf = new SparkConf().setMaster("local[*]").setAppName("rdd")   val sc = new SparkContext(conf)   val rdd = sc.makeRDD(List("Hello","Tom","Timi","Scala","Spark"))   val groupByRDD = rdd.groupBy(_.charAt(0))   groupByRDD.collect().foreach(println)   sc.stop() }

运行结果:

(T,CompactBuffer(Tom, Timi))(H,CompactBuffer(Hello))(S,CompactBuffer(Scala, Spark))

filter

函数说明:

filter即过滤器的意思,所以filter算子的作用就是过滤的作用。filter将根据指定的规则进行筛选过滤,符合条件的数据保留,不符合的数据丢弃,当数据进行筛选过滤之后,分区不变,但分区内的数据可能不均衡,生产环境下,可能会出现数据倾斜。

函数签名:

def filter(f: T => Boolean): RDD[T]

案例演示:

  1. 筛选出能被二整除的数字
 def main(args: Array[String]): Unit = {   val conf = new SparkConf().setMaster("local[*]").setAppName("rdd")   val sc = new SparkContext(conf)   val rdd = sc.makeRDD(List(46,235,246,2346,3276,235,234,6234,6245,246,24,6246,235,26,265))   val filterRDD = rdd.filter(_ % 2 == 0)   filterRDD.collect().foreach(println)   sc.stop() }

运行结果:

4624623463276234623424624624626

筛选单词中包含H的

 def main(args: Array[String]): Unit = {   val conf = new SparkConf().setMaster("local[*]").setAppName("rdd")   val sc = new SparkContext(conf)   val rdd = sc.makeRDD(List("Hello","Horber","Hbeer","ersfgH","Scala","Hadoop","Zookeeper"))   val filterRDD = rdd.filter(_.contains("H"))   filterRDD.collect().foreach(println)   sc.stop() }

运行结果:

HelloHorberHbeerersfgHHadoop

以上是“Spark RDD常用算子是什么类型的”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Spark RDD常用算子是什么类型的

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Spark RDD常用算子是什么类型的

小编给大家分享一下Spark RDD常用算子是什么类型的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Spark RDD常用算子:Value类型Spark之所以比
2023-06-27

计算机中最常用的鼠标接口类型是什么

这篇文章主要介绍了计算机中最常用的鼠标接口类型是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。目前最常用的鼠标接口类型是USB接口,USB是英文“Univer Seria
2023-06-20

Python numpy常用的数据类型是什么

本篇内容主要讲解“Python numpy常用的数据类型是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python numpy常用的数据类型是什么”吧!常见数据类型介绍Python 原生的
2023-07-05

Golang有类型常量和无类型常量的区别是什么

本篇内容主要讲解“Golang有类型常量和无类型常量的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang有类型常量和无类型常量的区别是什么”吧!场景在 Go 语言中,常量分为有
2023-07-05

常用的计算机机箱类型是哪个

这篇文章主要介绍了常用的计算机机箱类型是哪个,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。最常用的计算机机箱类型是ATX,支持现在绝大部分类型的主板。市面上销售的机箱以ATX
2023-06-20

常见的DDOS攻击类型是什么

常见的DDoS攻击类型包括:ICMP Flood: 攻击者通过发送大量的ICMP(Internet Control Message Protocol)数据包来使目标服务器过载,导致网络拥堵。SYN Flood: 攻击者发送大量的TCP SY
常见的DDOS攻击类型是什么
2024-05-15

亚马逊常用服务器是什么类型的

ECS是亚马逊的一种服务器类型,它可以在运行时动态调整计算资源的使用,以应对不同的应用程序负载。它的优点是可以提供高性能和灵活性,缺点是价格较高。RDS是亚马逊的另一种服务器类型,它提供了高可靠性、高可用性和低成本的数据库服务。RDS的优点是可以提供更好的安全性和可用性,缺点是价格较高。因此,如果你需要一个高性能、可靠性和安全性的数据库服务,建议使用ECS服务器,如果你只需要一个灵活的应用程序负载...
2023-10-27

Python数据类型和常用操作是什么

本篇内容介绍了“Python数据类型和常用操作是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、数值数值数据类型用于存储数值,数据类型
2023-06-30

Python数据类型及常用方法是什么

这篇文章主要讲解了“Python数据类型及常用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python数据类型及常用方法是什么”吧!一 引入我们学习变量是为了让计算机能够像人一样
2023-06-30

常见的服务器攻击类型是什么

常见的服务器攻击类型包括:DDos 攻击(Distributed Denial of Service):分布式拒绝服务攻击是通过大量恶意流量向服务器发送请求,导致服务器无法正常处理其他合法用户的请求。SQL 注入攻击:攻击者通过在应用程序中
常见的服务器攻击类型是什么
2024-05-11

亚马逊常用服务器是什么类型的商品

亚马逊常用服务器类型亚马逊(Amazon)作为全球最大的云计算服务提供商之一,提供了多种类型的服务器商品,以满足不同用户的需求。以下是亚马逊常用的几种服务器类型:1.AmazonEC2(弹性计算云)AmazonEC2是亚马逊提供的一种弹性计算云服务,它允许用户租用虚拟计算资源,包括虚拟机实例和存储容量。用户可以根据自己的需求选择不同的实例类型,如通用型、计算优化型、存储优化型等,以满足不同的计算和存储需求。2.Amazon...
2023-10-27

计算机网络中网页布局的常见8种类型是什么

这篇文章给大家分享的是有关计算机网络中网页布局的常见8种类型是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。网页布局的常见8种类型:1、“国”字型布局;2、拐角型布局;3、标题正文型布局;4、封面型布局;5、
2023-06-15

c#引用类型与值类型的区别是什么

这篇文章主要讲解了“c#引用类型与值类型的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c#引用类型与值类型的区别是什么”吧!解析:CLR支持两种类型:值类型和引用类型。用Jeff
2023-06-17

代理ip中常见的协议类型是什么

这篇文章给大家分享的是有关代理ip中常见的协议类型是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、Http代理:最常用的代理,代理客户机的http访问,主要代理浏览器访问网页,其端口一般为80,8080,
2023-06-20

网页布局的常见8种类型是什么

常见的网页布局类型有以下八种:1. 顶部导航布局:页面的导航菜单通常位于页面的顶部,方便用户快速导航。2. 侧边栏布局:将页面的主要内容放置于中间,左侧或右侧则用于显示次要信息或附加功能。3. 栅格布局:使用栅格系统将页面划分为多个列,方便
2023-08-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录