Spark-Scala语言实战(12)

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

在之前的文章中,我们学习了如何在spark中使用键值对中的join,rightOuterJoin,leftOuterJoin三种方法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。

Spark-Scala语言实战(11)-CSDN博客文章浏览阅读670次,点赞27次,收藏16次。今天开始的文章,我会带给大家如何在spark的中使用我们的键值对方法,今天学习键值对方法中的join,rightOuterJoin,leftOuterJoin三种方法。希望我的文章能帮助到大家,也欢迎大家来我的文章下交流讨论,共同进步。https://blog.csdn.net/qq_49513817/article/details/137357301今天的文章开始,我会继续带着大家如何在spark的中使用我们的键值对里的方法。今天学习键值对方法中的keys和values,reduceByKey,groupByKey三种方法。

目录

一、知识回顾

二、键值对方法

1.keys和values

2.reduceByKey

3.groupByKey

拓展-方法参数设置


一、知识回顾

上一篇文章中我们学习了键值对的三种方法,分别是join,rightOuterJoin,leftOuterJoin。

joinSpark-Scala语言实战(12),spark,scala,大数据,bigdata,数据分析

 join方法可以将两个RDD键值对进行内连接,它会将两个RDD键值对中拥有相同键的值进行连接。

Spark-Scala语言实战(12),spark,scala,大数据,bigdata,数据分析

rightOuterJoin方法是右外连接。只会包含右键值对的键,如果左边有右边的键,对应的值会连接。如果左边没有右边的键,就会显示None值(空值)。

Spark-Scala语言实战(12),spark,scala,大数据,bigdata,数据分析

leftOuterJoin与rightOuterJoin方法想法,它是左外连接,也就是如果右边有左边的键,对应的值会连接。如果右边没有左边的键,就会显示None值(空值)。

现在,开始今天的学习吧~

二、键值对方法

1.keys和values

  • 键值对RDD,包含键和值两个部分。
  • Spark提供了两种方法,分别获取键值对RDD的键和值。
  • keys方法返回一个仅包含键的RDD
  • values方法返回一个仅包含值的RDD
import org.apache.spark.{SparkConf, SparkContext}
object p1 {
  def main(args: Array[String]): Unit = {
    val conf=new SparkConf().setMaster("local").setAppName("p2")
    val sc=new SparkContext(conf)
    // 创建一个包含键值对的RDD
    val p = sc.parallelize(Seq(("a", 1), ("b", 2), ("c", 3), ("d", 4)))
    // 使用keys方法获取所有的键
    val p1 = p.keys
    p1.collect().foreach(println) // 输出:a, b, c, d
    // 使用values方法获取所有的值
    val p2 = p.values
    p2.collect().foreach(println) // 输出:1, 2, 3, 4
  }
}

可以看到我们创建了一个包含a,b,c,d四个元素的键与包含1,2,3,4四个元素的值,分别使用 keys与values获取它们对应的元素,那么键应该输出abcd,而值应该输出1234,现在运行代码。

Spark-Scala语言实战(12),spark,scala,大数据,bigdata,数据分析Spark-Scala语言实战(12),spark,scala,大数据,bigdata,数据分析

 与预期一致,快去试试吧~

2.reduceByKey

  • 当数据集以键值对形式展现时,合并统计键相同的值是很常用的操作。
  • reduceByKey()方法用于合并具有相同键的值,作用对象是键值对,并且只对每个键的值进行处理,当RDD中有多个键相同的键值对时,则会对每个键对应的值进行处理。
  • reduceByKey()方法需要接收一个输入函数,键值对RDD相同键的值会根据函数进行合并并且创建一个新的RDD作为返回结果。
import org.apache.spark.{SparkConf, SparkContext}
object p1 {
  def main(args: Array[String]): Unit = {
    val conf=new SparkConf().setMaster("local").setAppName("p2")
    val sc=new SparkContext(conf)
    // 创建一个包含键值对的RDD
    val p = sc.parallelize(Seq(("a", 1), ("b", 2), ("a", 3), ("b", 4), ("c", 5)))
    // 使用reduceByKey方法将具有相同键的值进行相加
    val pp = p.reduceByKey((x, y) => x + y)
    // 收集结果并打印
    pp.collect().foreach(println)
  }
}

 通过代码,我们创建了一个包含abc三个键的RDD,但a,b两个键对应有多个值,那么使用reduceByKey方法,就可以将具有相同键的值进行相加。那么a的值就应该是1+3=4,b的值2+4=6,c不变。

Spark-Scala语言实战(12),spark,scala,大数据,bigdata,数据分析

运行代码,可以看到与预期输出一致。 

3.groupByKey

  • groupByKey()方法用于对具有相同键的值进行分组,可以对同一组的数据进行计数、求和等操作。
  • 对于一个由类型K的键和类型V的值组成的RDD,通过groupByKey()方法得到的RDD类型是[K,Iterable[V]]
import org.apache.spark.{SparkConf, SparkContext}
object p1 {
  def main(args: Array[String]): Unit = {
    val conf=new SparkConf().setMaster("local").setAppName("p2")
    val sc=new SparkContext(conf)

    val p = sc.parallelize(Seq(("a", "1"), ("a", "3"), ("b", "6"), ("a", "7"), ("b", "2")))
    // 使用groupByKey方法将具有相同键的值分组
    val pp= p.groupByKey()
    // 收集结果并打印
    pp.collect().foreach(println)
    }
}

我们创建了一个包含ab两个键的RDD,它们分布有多个不同的值,使用groupByKey将它们进行分组的话,就会输出只有ab的两个键与多个值的组。

Spark-Scala语言实战(12),spark,scala,大数据,bigdata,数据分析

与预期一致,快去试试吧~文章来源地址https://www.toymoban.com/news/detail-850812.html

拓展-方法参数设置

方法 描述 参数 效果 属性
keys 提取键值对RDD中的键,形成新的RDD 返回一个只包含键的新RDD 不改变值的数量,只保留键
values 提取键值对RDD中的值,形成新的RDD 返回一个只包含值的新RDD 不改变键的数量,只保留值
reduceByKey 根据键对RDD中的值进行聚合操作,返回一个新的键值对RDD 函数(用于聚合值) 将具有相同键的值聚合在一起,应用提供的函数 减少输出的数量,只保留唯一的键和聚合后的值
groupByKey 根据键对RDD中的值进行分组,返回一个新的键值对RDD,其中值是一个迭代器 将具有相同键的值分组在一起,值是一个包含所有相关值的迭代器 不减少输出的数量,但将相同键的值组合在一起

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

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

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

相关文章

  • Spark-Scala语言实战(11)

    在之前的文章中,我们学习了如何在spark中使用RDD中的cartesian,subtract最终两种方法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言实战(10)-CSDN博客 文章浏览阅读977次,点赞32次,

    2024年04月09日
    浏览(41)
  • Spark-Scala语言实战(13)

    在之前的文章中,我们学习了如何在spark中使用键值对中的keys和values,reduceByKey,groupByKey三种方法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言实战(12)-CSDN博客 文章浏览阅读72

    2024年04月08日
    浏览(48)
  • Spark-Scala语言实战(15)

    在之前的文章中,我们学习了如何在spark中使用键值对中的学习键值对方法中的lookup,cogroup两种方法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言实战(14)-CSDN博客 文章浏览阅

    2024年04月15日
    浏览(51)
  • Spark-Scala语言实战(7)

    在之前的文章中,我们学习了如何在IDEA中导入jars包,并做了一道例题,了解了RDD。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言实战(6)-CSDN博客 文章浏览阅读695次,点赞15次,

    2024年04月15日
    浏览(54)
  • Spark-Scala语言实战(8)

    在之前的文章中,我们学习了如何在spark中使用RDD方法的map,sortby,collect。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言实战(7)-CSDN博客 文章浏览阅读802次,点赞22次,收藏8次。​

    2024年04月11日
    浏览(46)
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-2)

    Spark是专为大规模数据处理而设计的快速通用的计算引擎,它是由Scala语言开发实现的,关于大数据技术,本身就是计算数据,而Scala既有面向对象组织项目工程的能力,又具备计算数据的功能,同时Spark和Scala的紧密集成,本书将采用Scala语言开发Spark程序,所以学好Scala将有助

    2024年02月11日
    浏览(62)
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-3)

    对于每一门编程语言来说,数组(Array)都是重要的数据结构之一,主要用来存储数据类型相同的元素。Scala中的数组分为定长数组和变长数组,定义定长数组,需要使用new,而定义变长数组时,则需要导包 import scala.collection.mutable.ArrayBuffer 。 数组(Array)主要用来存储

    2024年02月10日
    浏览(64)
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-1)

    Spark是专为大规模数据处理而设计的快速通用的计算引擎,它是由Scala语言开发实现的,关于大数据技术,本身就是计算数据,而Scala既有面向对象组织项目工程的能力,又具备计算数据的功能,同时Spark和Scala的紧密集成,本书将采用Scala语言开发Spark程序,所以学好Scala将有助

    2024年02月11日
    浏览(67)
  • 大数据Spark SparkSession的3种创建方式 Scala语言实现

    SparkSession是Apache Spark 2.0版本引入的一个编程接口,用于与Spark进行交互。它是Spark应用程序的入口点,提供了一种方便的方式来创建DataFrame、DataSet和SQLContext等数据结构,并且可以配置各种Spark应用程序的选项。SparkSession还管理了Spark应用程序的运行环境,包括Spark集群的连接,

    2023年04月20日
    浏览(38)
  • 【用IDEA基于Scala2.12.18开发Spark 3.4.1 项目】

    打开IDEA后选址新建项目 选址sbt选项 配置JDK debug 解决方案 相关的依赖下载出问题多的话,可以关闭idea,重启再等等即可。 将sbt源设置为国内源 基于sbt添加依赖 spark-sql spark-core Spark sql simleapp代码如下: Spark RDD代码如下: 到此,基于Scala2.12.18开发Spark 3.4.1 项目完成。

    2024年02月14日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包