Spark编程之基本的RDD算子之glom,substract,substractByKey,intersection,distinct,union

RDD用法与实例(五):glom的用法 glom 1、glom的作用是将同一个分区里的元素合并到一个array里 2、glom属于Transformation算子 # Example: glom import sys import random a = sc.parallelize(range(0,100),10) #parallelize 进行并行处理,0~100每隔10步长取一次 print(a.collect()) #没有glom所以不分组 print(a.glom().collect()) print(a.map(lambda x: 阅读详情

Spark编程之基本的RDD算子之glom,substract,substractByKey,intersection,distinct,union等。


  • 1) glom

这个算子会将每一个分区的元素放在一个数组里面然后存储在RDD里面。

def glom(): RDD[Array[T]]
val a = sc.parallelize(1 to 100, 3)
a.glom.collect //可以看到,glom将每个分区都放在了一个数组里面。调用collect方法后,会继续将返回的结果放在一个数组里面。

res8: Array[Array[Int]] = Array(Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33), Array(34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66), Array(67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100))

  • 2) substract

实现一个类似于集合A-B的操作。

def subtract(other: RDD[T]): RDD[T]
def subtract(other: RDD[T], numPartitions: Int): RDD[T]
def subtract(other: RDD[T], p: Partitioner): RDD[T]

接收一个RDD[T],或者再传入分区数,或者自己定义的Partitioner。

val a = sc.parallelize(1 to 9, 3)
val b = sc.parallelize(1 to 3, 3)
val c = a.subtract(b)
c.collect
res3: Array[Int] = Array(6, 9, 4, 7, 5, 8) //将剩下的元祖返回。
  • 3) subtractByKey

根据key值来进行substract。

def subtractByKey[W: ClassTag](other: RDD[(K, W)]): RDD[(K, V)]
def subtractByKey[W: ClassTag](other: RDD[(K, W)], numPartitions: Int): RDD[(K, V)]
def subtractByKey[W: ClassTag](other: RDD[(K, W)], p: Partitioner): RDD[(K, V)]
val a = sc.parallelize(List("dog", "tiger", "lion", "cat", "spider", "eagle"), 2)
val b = a.keyBy(_.length)
val c = sc.parallelize(List("ant", "falcon", "squid"), 2)
val d = c.keyBy(_.length)
b.subtractByKey(d).collect //d中没有key值为4的键值对,所以返回的结果为(4,lion)
res15: Array[(Int, String)] = Array((4,lion))

  • 4) intersection

返回两个RDD间元素的交集。

def intersection(other: RDD[T], numPartitions: Int): RDD[T]
def intersection(other: RDD[T], partitioner: Partitioner)(implicit ord: Ordering[T] = null): RDD[T]
def intersection(other: RDD[T]): RDD[T]
val x = sc.parallelize(1 to 20)
val y = sc.parallelize(10 to 30)
val z = x.intersection(y)  

z.collect //可以看到两个RDD间元素的交集为10-20
res74: Array[Int] = Array(16, 12, 20, 13, 17, 14, 18, 10, 19, 15, 11)
  • 5) union, ++

将两个RDD的元素连接起来。

def ++(other: RDD[T]): RDD[T]
def union(other: RDD[T]): RDD[T]
val a = sc.parallelize(1 to 3, 1)
val b = sc.parallelize(5 to 7, 1)
(a ++ b).collect
res0: Array[Int] = Array(1, 2, 3, 5, 6, 7)
  • 6) distinct

返回一个全新的RDD,每个元素只包含一次。

def distinct(): RDD[T]
def distinct(numPartitions: Int): RDD[T]
val c = sc.parallelize(List("Gnu", "Cat", "Rat", "Dog", "Gnu", "Rat"), 2)
c.distinct.collect
res6: Array[String] = Array(Dog, Gnu, Cat, Rat)  //去除了里面重复的元素。

val a = sc.parallelize(List(1,2,3,4,5,6,7,8,9,10)) 
a.distinct(2).partitions.length   //去除元素以后重新分区。
res16: Int = 2

a.distinct(3).partitions.length
res17: Int = 3
头歌educoder Spark算子--Scala版本 实训答案 第1关:转换算子之map和distinct算子 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object EduCoder1 { def main(args: Array[String]): Unit = { val conf =new SparkConf().setAppName("educoder").setMaster("local") val s... 阅读详情

相关推荐

Spark中glom算子详解介绍

前几篇文章我们讲了 `mapParrtitions` 这个算子,该算子可以对整个分区的数据进行处理,内部的函数的输入是分区数据的迭代器,在此可以直接进行处理。

优快云 精品推荐 859

Spark之RDD的glom算子

glom的作用是将同一个分区里的元素合并到一个array里 glom属于Transformation算子:这种变换并不触发提交作业,完成作业中间过程处理。 Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。

SX的博客 5870

Spark编程挑战题目

Spark编程挑战题目非常有趣,涵盖了大数据处理的各个方面。以下是对每个题目的简要描述: 1.社交媒体情绪分析:这个题目要求参赛者设计并实现一个Spark应用程序,用于分析社交媒体(如Twitter)的数据流。 2.大规模数据去重:这个题目要求参赛者编写一个Spark作业,处理包含数十亿条记录的用户行为数据集。 3.客户购买行为关联规则挖掘:这个题目要求参赛者设计一个Spark MLlib实现的解决方案。 4.实时广告点击率预测:这个题目要求参赛者构建一个基于Spark Streaming的应用。 5.大规模图像标签分类:这个题目要求参赛者设计一个Spark + Deep Learning的解决方案,处理PB级别的图像数据集,利用Spark进行分布式预处理(如特征提取),并将处理后的数据喂给深度学习模型进行训练和评估。目标是实现高效的图像标签分类。 6.智能物流路线规划:这个题目要求参赛者利用Spark GraphX进行物流配送中心与客户之间的路线规划,根据车辆负载、距离、预计送达时间等因素,通过贪心算法或图论算法求解最优配送方案,降低总体运输成本并提高准时交付率。

Spark之RDD常用操作

test

chenxu_0209的博客 1048

告别Vysor!用Scrcpy在Mac上无线投屏安卓手机(附魅族16th闪退修复实战)

本文详细介绍了如何在Mac上配置和使用开源投屏工具Scrcpy,实现安卓手机无线投屏的高效解决方案。从基础环境准备到高级功能调优,包括无线连接配置、输入控制增强、多设备管理和性能优化等实用技巧,特别针对魅族16th等机型的闪退问题提供了修复方案,帮助用户彻底告别Vysor等商业软件。

weixin_28712661的博客 396

STK中的传感器与通信组件:雷达、发射机、接收机与天线的协同建模

本文深入解析了STK软件中传感器、雷达、发射机、接收机与天线的协同建模方法。通过构建一个完整的卫星对地数传系统实例,阐述了各组件如何分工协作,实现从几何指向到射频链路的高保真仿真,为复杂航天通信与探测系统的设计与分析提供了高效、灵活的解决方案。

weixin_29271263的博客 273

spark算子大全glom_Spark算子总结及案例

spark算子大致上可分三大类算子:1、Value数据类型的Transformation算子,这种变换不触发提交作业,针对处理的数据项是Value型的数据。2、Key-Value数据类型的Transformation算子,这种变换不触发提交作业,针对处理的数据项是Key-Value型的数据。3、Action算子,这类算子会触发SparkContext提交作业。一、Value型Transformat...

weixin_39593523的博客 440

矩阵LED和矩阵按键

先说矩阵LED,如图: 下面以行几、列几的表达方法说明 三极管可以当做开关使用 由图可知,如果想让一个LED亮,那么它对应的行和列的三极管都要导通。如果这个矩阵每次只亮一个LED,那么正常写程序没问题。 如果我们想让LED1和LED6亮,其他灯不亮,则需要开启行1、行2、列1、列2,随之带来的问题就是LED2和LED5也会跟着亮起来。 解决方法类似于扫描,因为单片机运行速度很快,可以在很短的时间内开关数次而肉眼看不到。所以我们可以每次只亮一列(排)灯,亮单位时间后关掉同时开启另外一列(排),如此四次一循环

qq_46615634的博客 5793

Spark glom

Spark glom

qq_43192537的博客 505

brother的PT-9800PCN标签打印机二次开发

本来想通过esc/p指令打印标签,但是无奈能找到的资料太少,而且打电话给客服,也没有sample可以提供参考,后来客服说使用template功能的话,打印很方便。于是下载手册学习了一下, 先下载P-touch Editor软件,制作标签模板。 制作的模板就是普通的标签,不需要连接数据库之类的,模板里有3个object,分别是文本1,文本2,条形码3。这个很关键,后面的代码传送数据,就是按这...

3563

Carla运行显示The following component(s) are required to run this program:DirectX Runtime |nvapi64.dll没有被

Carla运行显示The following component(s) are required to run this p 参考: 【1】EPIC 启动游戏提示The following component(s) are required to run this program:... - 『悬赏问答区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cnhttps://www.52pojie.cn/thread-1485651-1-1.html ...

anananajiushiwo的博客 5万+

spark算子_Spark算子总结

一、RDD介绍1、什么是RDDRDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象。代码中是一个抽象类,它代表一个不可变、可分区、里面的元素可并行计算的集合。2、RDD特性RDD:是不存数据的,partition也是不存数据的(是一系列处理逻辑)RDD五大特性:a、RDD是由一系列partition组成 b、算子(函数作用到par...

weixin_39623713的博客 334

史上最全!研究生科研必备科研工具(含AI科研工具),附使用说明和示例

这些工具在科研中的应用非常广泛,可以帮助研究生更高效地完成研究任务。为了更好地利用这些工具,建议深入学习它们的官方文档和教程,或者参加相关的工作坊和培训。

智能AI让学术科研更容易 3944

Spark快速大数据分析-RDD编程

一.RDD基础 RDD(Resilient Distributed Dataset):弹性分布式数据集 RDD就是一个不可变的分布式对象集合。每个RDD都被分为多个分区,这些分区运行在集群中的不同节点。用户可以通过2中方法创建RDD: 1)读取一个外部数据集 sc.textFile("test.txt") 2)在驱动器程序里分发驱动器程序中的对象集合(比如list和set) sc.pa

相貌太次郎 865

高通Camx功能feature分析之一:remosaic功能导通

本文详细介绍了S5K3P9S传感器前置场景中SW Remosaic功能的实现流程。首先需在sensorxml中确认支持SW Remosaic类型,并集成remosaic相关库文件(libremosaic_wrapper.so等)。核心实现包括:初始化阶段调用InitFrontSamsungRemosaic();执行线程DeferFrontInitThread()读取校准数据;通过DoSamsungRemosaic()执行remosaic算法处理;最后在析构函数中调用DeinitFrontSamsungRem

1700

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【数据仓库】Spark算子

第一关:转换算子之map和distinct算子 输出每个元素及其长度并去重。 //第一步:通过获取rdd中每个元素的长度创建新的rdd1 val rdd1=rdd.map(x => x.length()) //第二步:通过zip把rdd1和rdd组合创建rdd2 val rdd2=rdd.zip(rdd1) //第三步:去重 val rdd3=rdd2.distinct() //第四步:输出结果 rdd3.foreach(println) 第2关:转换算子之flatMap和fi

Ddds的博客 2120

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Spark转换算子--golm()分区转换数组

1)函数签名: def glom():RDD[Array[T]] 2)功能说明 该操作将RDD中每一个分区变成一个数组,并放置在新的RDD中,数组中的元素的类型与原分区中的元素类型一致 3)需求说明:创建一个2个分区的RDD,并将每个分区的数据放到一个数组,求出每个分区的最大值 4)具体实现: package com.huc.Spark1.value import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkCon

Huc673619的博客 795

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

spark-shuffle阶段详细描述

spark的shuffle流程 1.shuffle发生在宽依赖算子划分阶段的时候,但是宽依赖算子不一定发生shuffle 2.shuffle分为两个阶段,一个是shuffle-write,另一个是shuffle-read 3.在shuffle-执行write时,我们要可以选择一个分区器,比如有hashpartition、rangepartition,还有用户自定义的分区器 4.在write时,还会生成一个write对象 -- unsafeshufflewrite对象 -- bypassMergesh

weixin_48960305的博客 766

spark中的转换算子1

spark转换算子1举例: 1)map算子: 将原来 RDD 的每个数据项通过 map 中的用户自定义函数 f 映射转变为一个新的元素。源码中 map 算子相当于初始化一个 RDD, 新 RDD 叫做 MappedRDD(this, sc.clean(f))。 package Test import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} import scala.util.Random ob

changshupx的博客 1059

spark RDD基础装换操作--glom操作

13.glom操作 创建一个由数字1~10组成的RDD,并且设置为5个分区。然后将对应分区转换为数组。 scala> val rddData1 = sc.parallelize(1 to 10,5) rddData1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[32] at parallelize at <consol...

weixin_43744732的博客 517

pyspark学习-RDD转换和动作

【代码】pyspark学习-RDD转换和动作。

天天学习的博客 373

Spark RDD算子(八) subtractByKey、 join、rightOuterJoin、leftOuterJoin

目录一、subtractByKey二、 join三、rightOuterJoin四、leftOuterJoin 一、subtractByKey 类似于subtract,删掉 rdd 中键与 rdd2 中的键相同的元素 二、 join 可以把rdd,rdd2中的相同的key给连接起来,类似于sql中的join操作 三、rightOuterJoin 对两个 rdd 进行连接操作,类似于sql中的右外连接,存在的话,value用的Some, 不存在用的None,具体的看上面的图和下面的代码即可 四、leftOut

timicai的博客 582

Spark算子:RDD基本转换操作(1)–map、flatMap、distinct

关注我的微信公众号:pythonislover,领取python,大数据,SQL优化相关视频资料!~ Python大数据与SQL优化笔 QQ群:771686295 map 将一个RDD中的每个数据项,通过map中的函数映射变为一个新的元素。 输入分区与输出分区一对一,即:有多少个输入分区,就有多少个输出分区。 hadoop fs -cat /tmp/1.txt hel...

南山南的Python和大数据学习笔记 1075

Spark算子 - Python(头歌)

Spark算子 - Python

python一生之敌的博客 5193

spark算子大全glom_spark 算子总结

本文主要介绍spark中常用的算子的作用记忆部分示例总结。从总体上来分,spark算子可以分为两大类:transformation和action,其中transformation触发会记录元数据信息,延迟执行,只有触发action才会真正的执行计算。从小方向上来讲,spark算子可以分为三种类型:value类型transformation算子,key-value类型transformation算子...

weixin_42558758的博客 708
上一篇: Spark编程之基本的RDD算子coalesce, repartition, checkpoint
下一篇: Spark性能优化:shuffle调优
stevekangpei
博客等级 码龄11年 25粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值