前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >7 spark入门键值对操作subtractByKey, join, rightOuterJoin, leftOuterJoin

7 spark入门键值对操作subtractByKey, join, rightOuterJoin, leftOuterJoin

作者头像
天涯泪小武
发布于 2019-06-26 05:54:54
发布于 2019-06-26 05:54:54
93200
代码可运行
举报
文章被收录于专栏:SpringCloud专栏SpringCloud专栏
运行总次数:0
代码可运行

转账自:https://cloud.tencent.com/developer/article/1435640

subtractByKey

函数定义

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
def subtractByKey[W](other: RDD[(K, W)])(implicit arg0: ClassTag[W]): RDD[(K, V)]

def subtractByKey[W](other: RDD[(K, W)], numPartitions: Int)(implicit arg0: ClassTag[W]): RDD[(K, V)]

def subtractByKey[W](other: RDD[(K, W)], p: Partitioner)(implicit arg0: ClassTag[W]): RDD[(K, V)]

类似于subtrac,删掉 RDD 中键与 other RDD 中的键相同的元素

join

函数定义

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
def join[W](other: RDD[(K, W)]): RDD[(K, (V, W))]

def join[W](other: RDD[(K, W)], numPartitions: Int): RDD[(K, (V, W))]

def join[W](other: RDD[(K, W)], partitioner: Partitioner): RDD[(K, (V, W))]
  • RDD1.join(RDD2)

可以把RDD1,RDD2中的相同的key给连接起来,类似于sql中的join操作

leftOuterJoin

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def leftOuterJoin[W](other: RDD[(K, W)]): RDD[(K, (V, Option[W]))]

def leftOuterJoin[W](other: RDD[(K, W)], numPartitions: Int): RDD[(K, (V, Option[W]))]

def leftOuterJoin[W](other: RDD[(K, W)], partitioner: Partitioner): RDD[(K, (V, Option[W]))]

直接看图即可

对两个 RDD 进行连接操作,类似于sql中的左外连接

rightOuterJoin

对两个 RDD 进行连接操作,类似于sql中的右外连接,存在的话,value用的Some, 不存在用的None,具体的看上面的图和下面的代码即可

代码示例

scala语言

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    scala> val rdd = sc.makeRDD(Array((1,2),(3,4),(3,6)))
    scala> val other = sc.makeRDD(Array((3,9)))

    scala>  rdd.subtractByKey(other).collect()
    res0: Array[(Int, Int)] = Array((1,2))

    scala> rdd.join(other).collect()
    res1: Array[(Int, (Int, Int))] = Array((3,(4,9)), (3,(6,9)))

    scala> rdd.leftOuterJoin(other).collect()
    res2: Array[(Int, (Int, Option[Int]))] = Array((1,(2,None)), (3,(4,Some(9))), (3,(6,Some(9))))

    scala> rdd.rightOuterJoin(other).collect()
    res3: Array[(Int, (Option[Int], Int))] = Array((3,(Some(4),9)), (3,(Some(6),9)))

java语言

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    JavaRDD<Tuple2<Integer,Integer>> rddPre = sc.parallelize(Arrays.asList(new Tuple2(1,2)
            , new Tuple2(3,4)
            , new Tuple2(3,6)));
    JavaRDD<Tuple2<Integer,Integer>> otherPre = sc.parallelize(Arrays.asList(new Tuple2(3,10)));

    //JavaRDD转换成JavaPairRDD
    JavaPairRDD<Integer, Integer> rdd = JavaPairRDD.fromJavaRDD(rddPre);
    JavaPairRDD<Integer, Integer> other = JavaPairRDD.fromJavaRDD(otherPre);
    //subtractByKey
    JavaPairRDD<Integer, Integer> subRDD = rdd.subtractByKey(other);

    //join
    JavaPairRDD<Integer, Tuple2<Float, Integer>> joinRDD =  rdd.join(other);

    //leftOuterJoin
    JavaPairRDD<Integer, Tuple2<Integer, Optional<Integer>>> integerTuple2JavaPairRDD = rdd.leftOuterJoin(other);

    //rightOutJoin
    JavaPairRDD<Integer, Tuple2<Optional<Integer>, Integer>> rightOutJoin = rdd.rightOuterJoin(other);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年04月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
spark RDD算子(八)之键值对关联操作
github: https://github.com/zhaikaishun/spark_tutorial/tree/master/src/main/java/com/spark/rdd_tutorial/tutorial8 先从spark-learning中的一张图大致了解其功能
天涯泪小武
2019/05/26
1.8K0
【Spark篇】---Spark中transformations算子二
coalesce常用来减少分区,第二个参数是减少分区的过程中是否产生shuffle。
LhWorld哥陪你聊算法
2018/09/13
9910
【Spark篇】---Spark中transformations算子二
Spark RDD 操作详解——Transformations
Spark RDD 支持2种类型的操作: transformations 和 actions。transformations: 从已经存在的数据集中创建一个新的数据集,如 map。actions: 数据集上进行计算之后返回一个值,如 reduce。
李振
2021/11/26
7880
Spark算子总结
由于计算过程是在内存进行,然后spill出来,每到达一个checkpoint就会将内存中的数据写入到磁盘,这个功能就是手动使其到达checkpoint
vincentbbli
2021/08/18
8960
Spark2.3.0 RDD操作
例如,map 是一个转换操作,传递给每个数据集元素一个函数并返回一个新 RDD 表示返回结果。另一方面,reduce 是一个动作操作,使用一些函数聚合 RDD 的所有元素并将最终结果返回给驱动程序(尽管还有一个并行的 reduceByKey 返回一个分布式数据集)。
smartsi
2019/08/07
2.4K0
【Spark篇】---Spark中Action算子
Action类算子也是一类算子(函数)叫做行动算子,如foreach,collect,count等。Transformations类算子是延迟执行,Action类算子是触发执行。一个application应用程序(就是我们编写的一个应用程序)中有几个Action类算子执行,就有几个job运行。
LhWorld哥陪你聊算法
2018/09/13
1K0
【Spark篇】---Spark中Action算子
大数据技术之_19_Spark学习_02_Spark Core 应用解析+ RDD 概念 + RDD 编程 + 键值对 RDD + 数据读取与保存主要方式 + RDD 编程进阶 + Spark Cor
  我们需要一个效率非常快,且能够支持迭代计算和有效数据共享的模型,Spark 应运而生。RDD 是基于工作集的工作模式,更多的是面向工作流。   但是无论是 MR 还是 RDD 都应该具有类似位置感知、容错和负载均衡等特性。
黑泽君
2019/05/10
2.5K0
大数据技术之_19_Spark学习_02_Spark Core 应用解析+ RDD 概念 + RDD 编程 + 键值对 RDD + 数据读取与保存主要方式 + RDD 编程进阶 + Spark Cor
Spark Core快速入门系列(3) | <Transformation>转换算子
  从一个已知的 RDD 中创建出来一个新的 RDD 例如: map就是一个transformation.
不温卜火
2020/10/28
1.9K0
Spark Core快速入门系列(3) | <Transformation>转换算子
Spark常用的算子以及Scala函数总结
上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习 快速带你晋级 阅读全文 > 正文共11264个字,7张图,预计阅读时间28分钟。 Spark与Scala 首先,介绍一
用户1332428
2018/04/17
1.9K0
Spark常用的算子以及Scala函数总结
Spark-Core核心算子
接收一个返回值为布尔类型的函数作为参数。当某个RDD调用filter方法时,会对该RDD中每一个元素应用f函数,如果返回值类型为true,则该元素会被添加到新的RDD中。
ha_lydms
2023/09/04
2910
Spark-Core核心算子
spark三种连接join
本文主要介绍spark join相关操作。 讲述spark连接相关的三个方法join,left-outer-join,right-outer-join,在这之前,我们用hiveSQL先跑出了结果以方便进行对比。 我们以实例来进行说明。我的实现步骤记录如下。 1、数据准备 2、HSQL描述 3、Spark描述 1、数据准备 我们准备两张Hive表,分别是orders(订单表)和drivers(司机表),通过driver_id字段进行关联。数据如下: orders orders表有两个字段,订单id:order
用户1225216
2018/03/05
1.4K0
原 荐 Spark框架核心概念
Spark框架核心概念     首先介绍Spark中的核心名词概念,然后再逐一详细说明。 RDD:弹性分布式数据集,是Spark最核心的数据结构。有分区机制,所以可以分布式进行处理。有容错机制,通过RDD之间的依赖关系来恢复数据。 依赖关系:RDD的依赖关系是通过各种Transformation(变换)来得到的。父RDD和子RDD之间的依赖关系分两种:①窄依赖②宽依赖。     ①窄依赖:父RDD的分区和子RDD的分区关系是:一对一。     窄依赖不会发生Shuffle,执行效率高,spark框架底层
云飞扬
2018/05/17
1.4K0
Spark 转换算子源码
可以从源码看出其入参是f: T ⇒ U 是一个函数,首先经过sc.clean(f) 进行闭包检测,然后创建一个MapPartitionsRDD。sc.clean()函数的作用检测用户构建的函数是否可以序列化,这是因为Spark中的map是一个分布式的函数,最终的执行是在Executor上开线程执行,而我们的函数构建都是在Driver端进行。Spark实际上进行的是计算的转移,将函数传递到数据所在的Worker节点。
Tim在路上
2022/03/23
1K0
Spark Core快速入门系列(4) | <Action> 行动算子转换算子
  返回一个由RDD的前n个元素组成的数组   take 的数据也会拉到 driver 端, 应该只对小数据集使用
不温卜火
2020/10/28
5060
Spark k-v类型转换算子
将传入的函数应用于value的算子,实质是创建了MapPartitionsRDD,并在调用迭代函数时,只将函数应用于value。
Tim在路上
2022/03/23
7650
spark作业-源码分析
b.默认分区器,对于第一个join会返回一个以电脑core总数为分区数量的HashPartitioner.第二个join会返回我们设定的HashPartitioner(分区数目3)
用户2337871
2021/12/28
2600
spark作业-源码分析
键值对操作
键值对 RDD 通常用来进行聚合计算。我们一般要先通过一些初始 ETL(抽取、转化、装载)操作来将数据转化为键值对形式。键值对 RDD 提供了一些新的操作接口(比如统计每个产品的评论,将数据中键相同的分为一组,将两个不同的 RDD 进行分组合并等)。
全栈程序员站长
2022/07/23
3.5K0
键值对操作
Pyspark学习笔记(五)RDD操作(四)_RDD连接/集合操作
对应于SQL中常见的JOIN操作 菜鸟教程网关于SQL连接总结性资料 Pyspark中的连接函数要求定义键,因为连接的过程是基于共同的字段(键)来组合两个RDD中的记录,因此需要操作键值对RDD
TeeyoHuang
2022/09/23
1.3K0
Spark RDD / Dataset 相关操作及对比汇总笔记
本篇博客将会汇总记录大部分的Spark RDD / Dataset的常用操作以及一些容易混淆的操作对比。
大鹅
2020/10/29
1.7K0
Spark常用Transformations算子(二)
介绍以下Transformations算子: aggregateByKey join cogroup cartesian pipe repartitionAndSortWithinPartitions glom randomSplit zip zipWithIndex zipWithUniqueId
CoderJed
2018/09/13
3750
Spark常用Transformations算子(二)
推荐阅读
相关推荐
spark RDD算子(八)之键值对关联操作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文