Spark中join和cogroup

这篇具有很好参考价值的文章主要介绍了Spark中join和cogroup。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

笔者最近在复习spark,发现对cogroup算子掌握不牢固。因此写下这篇博客,方便以后学习。

join算子

join算子相当于将两个rdd进行内连接,在join的结果中,返回值是key和元组

cogroup算子

cogroup算子相当于将两个rdd中 相同键的每个元素的value进行合并中。
在 cogroup 的结果中,返回值是key和迭代器。对于每个key,元组的第一个元素是一个迭代器,包含了所有具有该键的第一个RDD的元素,第二个元素是另一个迭代器,包含了所有具有该键的第二个RDD的元素。如果某个RDD中没有与该键匹配的元素,对应的迭代器将为空。

代码如下

from pyspark import SparkContext, SparkConf

conf = SparkConf().setAppName("test230827")
sc = SparkContext(conf=conf)

data1 = [("a", 1), ("b", 2), ("c", 3), ("b", 5)]
data2 = [("a", "x"), ("b", "y"), ("d", "z")]

# join  ===========================================================
rdd1 = sc.parallelize(data1)
rdd2 = sc.parallelize(data2)

joined = rdd1.join(rdd2)
result = joined.collect()

print(result)

# cogroup  ===========================================================

rdd1 = sc.parallelize(data1)
rdd2 = sc.parallelize(data2)

cogrouped = rdd1.cogroup(rdd2)
result = cogrouped.mapValues(lambda x: (list(x[0]), list(x[1]))).collect() # 因为返回值是迭代器 所以要使用list进行处理

print(result)

sc.stop()

运行结果

[('b', (2, 'y')), ('b', (5, 'y')), ('a', (1, 'x'))]
[('b', ([2, 5], ['y'])), ('d', ([], ['z'])), ('a', ([1], ['x'])), ('c', ([3], []))]


Spark中join和cogroup,Spark,spark

 文章来源地址https://www.toymoban.com/news/detail-683995.html

到了这里,关于Spark中join和cogroup的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spark DataFrame join后移除重复的列

    在Spark,两个DataFrame做join操作后,会出现重复的列。例如: 其schema如下: 我们在继续操作这个DataFrame时,可能就会报错,如下:org.apache.spark.sql.AnalysisException: Reference ‘movieId’ is ambiguous 解决方案有两种方法可以用来移除重复的列 方法一:join表达式使用字符串数组(用于

    2024年01月21日
    浏览(42)
  • spark 的group by ,join数据倾斜调优

    spark任务中最常见的耗时原因就是数据分布不均匀,从而导致有些task运行时间很长,长尾效应导致的整个job运行耗时很长 首先我们要定位数据倾斜,我们可以通过在spark ui界面中查看某个stage下的task的耗时,如果发现某些task耗时很长,对应要处理的数据很多,证明有数据倾斜

    2024年02月21日
    浏览(47)
  • spark sql 数据倾斜--join 同时开窗去重的问题优化

    背景: 需求:在一张查询日志表中,有百亿数据,需要join上维表,再根据几个字段进行去重 开窗去重和join 一定要分步进行 ,按照需求先做join再开窗,或者去重完成后在进行join。 dwd_tmp1 中存在百亿用户查询日志数据 数据倾斜 数据量超百亿,资源给到200 * 2c * 20G,执行引擎

    2024年02月11日
    浏览(58)
  • 【大数据开发 Spark】第一篇:Spark 简介、Spark 的核心组成(5大模块)、Spark 的主要特征(4大特征)、Spark 对比 MapReduce

    初步了解一项技术,最好的方式就是去它的官网首页,一般首页都会有十分官方且准确的介绍,学习 Spark 也不例外, 官方介绍:Apache Spark ™是一种多语言引擎,用于在单节点机器或集群上执行数据工程、数据科学和机器学习。 我们可以得知,Spark 可以单节点运行,也可以搭

    2024年02月05日
    浏览(48)
  • Spark的生态系统概览:Spark SQL、Spark Streaming

    Apache Spark是一个强大的分布式计算框架,用于大规模数据处理。Spark的生态系统包括多个组件,其中两个重要的组件是Spark SQL和Spark Streaming。本文将深入探讨这两个组件,了解它们的功能、用途以及如何在Spark生态系统中使用它们。 Spark SQL是Spark生态系统中的一个核心组件,它

    2024年02月01日
    浏览(40)
  • Spark(29):Spark内存管理

    目录 0. 相关文章链接 1. 堆内和堆外内存规划 1.1. 堆内内存 1.2. 堆外内存 2. 内存空间分配 2.1. 静态内存管理 2.2. 统一内存管理 3. 存储内存管理 3.1. RDD 的持久化机制 3.2. RDD的缓存过程 3.3. 淘汰与落盘 4. 执行内存管理 4.1. Shuffle Write 4.2. Shuffle Read  Spark文章汇总      

    2024年02月17日
    浏览(60)
  • 【Spark】【Spark软件 的下载 】

    Downloads | Apache Spark Download Apache Spark™ 下载Apache Spark™ Choose a Spark release: 选择Spark版本:3.5.0 (Sep 13 2023) 3.5.0(2023年9月13日)3.4.2 (Nov 30 2023) 3.4.2(2023年11月30日) Choose a package type: 选择包类型: Pre-built for Apache Hadoop 3.3 and later  为Apache Hadoop 3.3及更高版本预构建  Pre-built

    2024年02月21日
    浏览(26)
  • [spark]spark资源分配

    hadoop2:9870 1)查看单个节点的总线程数 2)查看每个节点的内存大小 应该是32G 3)查看队列的内存占比(常用的是hive队列) 注:这个集群4个节点,每个节点8个线程,每个节点内存为32G 1、确定executor的cpu核数 每个executor的cpu设置为4(一般为3-6)比较合适 2、确定每个节点executo

    2024年02月08日
    浏览(43)
  • Spark 1:Spark基础入门

    Spark是什么 定义:Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎。 Spark 借鉴了 MapReduce 思想发展而来,保留了其分布式并行计算的优点并改进了其明显的缺陷。让中间数据存储在内存中提高了运行速度、并提供丰富的操作数据的API提高了开发速度

    2024年02月02日
    浏览(43)
  • 【Spark】Spark的常用算子

    Spark的常用算子 Spark 内置算子是指 Spark 提供的具有高性能、高效率和高可靠性的数据操作函数。Spark 内置算子可以帮助我们完成大量的数据预处理、处理和分析任务。其主要包括以下 4 类算子: 转换算子(Transformation):用于将一个 RDD 转换为另一个 RDD,常见的有 map、flat

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包