返回顶部
首页 > 资讯 > 精选 >spark常用算子有哪些
  • 691
分享到

spark常用算子有哪些

2023-06-02 20:06:50 691人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关spark常用算子有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一些经常用到的RDD算子map:将rdd的值输入,并返回一个自定义的类型,如下输入原始类型,

这篇文章将为大家详细讲解有关spark常用算子有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一些经常用到的RDD算子map:将rdd的值输入,并返回一个自定义的类型,如下输入原始类型,输出一个tuple类型的数组Scala> val rdd1 = sc.parallelize(List("a","b","c","d"),2)rdd1: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[1] at parallelize at <console>:24scala> rdd1.map((_,1)).collectres1: Array[(String, Int)] = Array((a,1), (b,1), (c,1), (d,1))                  -----------------------------------------------------------------------------------------------------------------mapPartitionsWithIndex:输出数据对应的分区以及分区的值scala> val rdd1 = sc.parallelize(List("a","b","c","d"),2)rdd1: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[3] at parallelize at <console>:24scala>     val func = (xpar:Int,y:Iterator[String])=>{     |       y.toList.map(x=>"partition:"+xpar+" value:"+x).iterator     |     }func: (Int, Iterator[String]) => Iterator[String] = <function2>scala> rdd1.mapPartitionsWithIndex(func).collectres2: Array[String] = Array(partition:0 value:a, partition:0 value:b, partition:1 value:c, partition:1 value:d)----------------------------------------------------------------------------------------------------------------------aggregate(zeroValue)(seqOp, combOp):对rdd的数据先按照分区汇总然后将分区的数据在汇总(迭代汇总,seqOp或者combOp的值会和下一个值进行比较)scala> val rdd1 = sc.parallelize(List("a","b","c","d"),2)rdd1: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[5] at parallelize at <console>:24scala> rdd1.aggregate("")(_+_,_+_)res3: String = abcd-----------------------------------------------------------------------------------------------------------------------aggregateByKey:适用于那种键值对类型的RDD,会根据key进行对value的操作,类似aggregatescala> val rdd = sc.parallelize(List((1,1),(1,2),(2,2),(2,3)), 2)rdd: org.apache.spark.rdd.RDD[(Int, Int)] = ParallelCollectionRDD[12] at parallelize at <console>:24scala> rdd.aggregateByKey(0)((x,y)=>x+y, (x,y)=>(x+y)).collectres36: Array[(Int, Int)] = Array((2,5), (1,3))-------------------------------------------------------------------------------------------------------------------------coalesce, repartition:repartition与coalesce相似,只不过repartition内部调用了coalesce,coalesce传入的参数比repartition传入的参数多一个,repartition有该参数的默认值,即:是否进行shuffulescala> val rdd = sc.parallelize(List(1,2,3,4,5), 2)rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[24] at parallelize at <console>:24scala> rdd.repartition(3)res42: org.apache.spark.rdd.RDD[Int] = MapPartitionsRDD[28] at repartition at <console>:27scala> res42.partitions.lengthres43: Int = 3-----------------------------------------------------------------------------------------------------------------------collectAsMap:将结果一map方式展示scala> val rdd = sc.parallelize(List(("a",2),("b",10),("x",22)), 2)rdd: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[29] at parallelize at <console>:24scala> rdd.collectAsMapres44: scala.collection.Map[String,Int] = Map(b -> 10, a -> 2, x -> 22)-----------------------------------------------------------------------------------------------------------------------combineByKey : 和reduceByKey是相同的效果。需要三个参数 第一个每个key对应的value 第二个,局部的value操作, 第三个:全局value操作scala> val rdd = sc.parallelize(List(("a",2),("b",10),("x",22),("a",200),("x",89)), 2)rdd: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[30] at parallelize at <console>:24scala> rdd.combineByKey(x=>x, (a:Int,b:Int)=>a+b, (a:Int,b:Int)=>a+b)res45: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[31] at combineByKey at <console>:27scala> res45.collectres46: Array[(String, Int)] = Array((x,111), (b,10), (a,202))---------------------------------------------------------------------------------------------------------------------------countByKey:通过Key统计条数scala> val rdd = sc.parallelize(List(("a",2),("b",10),("x",22),("a",200),("x",89)), 2)rdd: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[33] at parallelize at <console>:24scala> rdd.countByKeyres49: scala.collection.Map[String,Long] = Map(x -> 2, b -> 1, a -> 2)------------------------------------------------------------------------------------------------------------------------filterByRange:返回符合过滤返回的数据scala> val rdd = sc.parallelize(List(("a",2),("b",10),("x",22),("a",200),("x",89)), 2)rdd: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[36] at parallelize at <console>:24scala> rdd.filterByRange("a","b")res51: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[37] at filterByRange at <console>:27scala> res51.collectres52: Array[(String, Int)] = Array((a,2), (b,10), (a,200))------------------------------------------------------------------------------------------------------------flatMapValuesscala>  val rdd = sc.parallelize(List(("a"->"1 2 3 "),("b"->"1 2 3 "),("x"->"1 2 3 "),("a"->"1 2 3 "),("x"->"1 2 3 ")), 2)rdd: org.apache.spark.rdd.RDD[(String, String)] = ParallelCollectionRDD[39] at parallelize at <console>:24scala>  rdd.flatMapValues(x=>x.split(" ")).collectres53: Array[(String, String)] = Array((a,1), (a,2), (a,3), (b,1), (b,2), (b,3), (x,1), (x,2), (x,3), (a,1), (a,2), (a,3), (x,1), (x,2), (x,3))----------------------------------------------------------------------------------------------------------------foldByKey:通过key聚集数据然后做操作scala> val rdd = sc.parallelize(List(("a",2),("b",10),("x",22),("a",200),("x",89)), 2)rdd: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[41] at parallelize at <console>:24scala> rdd.foldByKey(0)(_+_).collectres55: Array[(String, Int)] = Array((x,111), (b,10), (a,202))----------------------------------------------------------------------------------------------------------------keyBy : 以传入的参数做keyscala> val rdd1 = sc.parallelize(List("dog", "salmon", "salmon", "rat", "elephant"), 3)rdd1: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[43] at parallelize at <console>:24scala> val rdd2 = rdd1.keyBy(_.length).collectrdd2: Array[(Int, String)] = Array((3,dog), (6,salmon), (6,salmon), (3,rat), (8,elephant))----------------------------------------------------------------------------------------------------------------keys valuesscala> val rdd1 = sc.parallelize(List("dog", "salmon", "salmon", "rat", "elephant"), 3)rdd1: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[45] at parallelize at <console>:24scala> val rdd2 = rdd1.map(x=>(x.length,x))rdd2: org.apache.spark.rdd.RDD[(Int, String)] = MapPartitionsRDD[47] at map at <console>:26scala> rdd2.keysres63: org.apache.spark.rdd.RDD[Int] = MapPartitionsRDD[48] at keys at <console>:29scala> rdd2.keys.collectres64: Array[Int] = Array(3, 6, 6, 3, 8)scala> rdd2.values.collectres65: Array[String] = Array(dog, salmon, salmon, rat, elephant)

关于spark常用算子有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: spark常用算子有哪些

本文链接: https://lsjlt.com/news/231172.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • spark常用算子有哪些
    这篇文章将为大家详细讲解有关spark常用算子有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一些经常用到的RDD算子map:将rdd的值输入,并返回一个自定义的类型,如下输入原始类型,...
    99+
    2023-06-02
  • Spark RDD常用算子是什么类型的
    小编给大家分享一下Spark RDD常用算子是什么类型的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Spark RDD常用算子:Value类型Spark之所以比...
    99+
    2023-06-27
  • Spark SQL的用途有哪些
    Spark SQL是一个用于在Spark平台上进行结构化数据处理的模块,它具有以下用途: 查询和分析结构化数据:Spark SQ...
    99+
    2024-04-09
    Spark
  • Java中常用的原子类有哪些
    小编给大家分享一下Java中常用的原子类有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、什么是原子类Java中提供了一些原子类,原子类包装了一个变量,并且提供了一系列对变量进行原子性操作的方法。我们在多线程环境下对...
    99+
    2023-06-15
  • 有哪些Shell常用命令和例子
    本篇内容主要讲解“有哪些Shell常用命令和例子”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些Shell常用命令和例子”吧!在Windows下的用户要使用shell命令符的话请先安装cyg...
    99+
    2023-06-09
  • spark-submit的有用选项有哪些
    这篇文章将为大家详细讲解有关spark-submit的有用选项有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们使用spark-submit时,必然要处理我们自己的配置文件、普通文件、...
    99+
    2023-06-19
  • 常用的算法思想有哪些
    本篇内容介绍了“常用的算法思想有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!枚举首先,最为简单的思想...
    99+
    2024-04-02
  • MySQL中常用的查询子句有哪些
    这篇文章给大家分享的是有关MySQL中常用的查询子句有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。对于数据分析,MySQL多采用查询,如数据的排序、分组、去重、汇总、字符串...
    99+
    2024-04-02
  • CSS盒子居中常用的方法有哪些
    小编给大家分享一下CSS盒子居中常用的方法有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!第一种:用css的position属性<style type="text/css">&...
    99+
    2023-06-08
  • Sentinel常用的流控算法有哪些
    这篇文章主要讲解了“Sentinel常用的流控算法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Sentinel常用的流控算法有哪些”吧!本文主要讲述...
    99+
    2024-04-02
  • 常用的JS搜索算法有哪些
    这篇文章主要介绍“常用的JS搜索算法有哪些”,在日常操作中,相信很多人在常用的JS搜索算法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”常用的JS搜索算法有哪些”的疑惑...
    99+
    2024-04-02
  • 常用的JS排序算法有哪些
    这篇文章给大家分享的是有关常用的JS排序算法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.冒泡排序var bubbleSort = fun...
    99+
    2024-04-02
  • c++常用的排序算法有哪些
    小编给大家分享一下c++常用的排序算法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!c++常用的排序算法//选择排序法SelectionSort(int a...
    99+
    2023-06-03
  • ASP编程中有哪些常用算法?
    ASP(Active Server Pages)是一种基于服务器端的脚本语言,它可以用来创建动态网页。在ASP编程中,常常需要使用一些算法来实现特定的功能。本文将介绍ASP编程中常用的几种算法,并且穿插一些演示代码来加深理解。 一、字符串...
    99+
    2023-11-11
    编程算法 对象 apache
  • python spark的特点有哪些
    Python Spark的特点有以下几个:1. 高效性:Python Spark使用内存计算技术,能够在大数据处理过程中提供高速的计...
    99+
    2023-10-23
    python
  • Spark RDD的内容有哪些
    这篇文章将为大家详细讲解有关Spark RDD的内容有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一.添加jar包运行1.官网位置点击步骤:Spark Programming...
    99+
    2023-06-02
  • Apache Spark局限性有哪些
    这篇文章给大家介绍Apache Spark局限性有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Apache Spark是行业中流行和广泛使用的大数据工具之一。Apache Spark已成为业界的热门话题,并且如今...
    99+
    2023-06-02
  • Spark中MLlib的应用场景有哪些
    分类:使用MLlib可以构建分类模型来预测数据实例的类别,例如垃圾邮件检测、情感分析等。 回归:MLlib可以用于构建回归模...
    99+
    2024-03-04
    Spark MLlib
  • spark中submit的应用场景有哪些
    在Spark中,submit方法通常用于将作业提交给Spark集群执行。以下是一些submit方法的应用场景: 执行批处理作业:...
    99+
    2024-04-03
    spark submit
  • spark中mappartitions的应用场景有哪些
    在Spark中,mapPartitions是一个transformation函数,它可以对每个分区中的元素进行操作,并返回一个新的分...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作