网站制作公司哪个好,三层别墅设计图片大全 效果图,郑州做网站推广地址,vue怎么做网页在之前的文章中#xff0c;我们学习了如何在spark中使用RDD的filter,distinct,intersection三种方法。想了解的朋友可以查看这篇文章。同时#xff0c;希望我的文章能帮助到你#xff0c;如果觉得我的文章写的不错#xff0c;请留下你宝贵的点赞#xff0c;谢谢。
Spark-…在之前的文章中我们学习了如何在spark中使用RDD的filter,distinct,intersection三种方法。想了解的朋友可以查看这篇文章。同时希望我的文章能帮助到你如果觉得我的文章写的不错请留下你宝贵的点赞谢谢。
Spark-Scala语言实战9-CSDN博客文章浏览阅读927次点赞25次收藏18次。今天开始的文章我会带给大家如何在spark的中使用我们的RDD方法今天学习RDD方法中的filter,distinct,intersection三种方法并进行一代。希望我的文章能帮助到大家也欢迎大家来我的文章下交流讨论共同进步。https://blog.csdn.net/qq_49513817/article/details/137205627?今天的文章我会继续带着大家如何在spark的中使用我们的RDD方法。今天学习RDD方法中的cartesian,subtract两种方法。
目录
一、知识回顾
二、RDD方法
1.cartesian
2.subtract
拓展-方法参数设置与笛卡尔积
1.方法参数设置 a.cartesian方法
b. subtract方法
2.笛卡尔积 一、知识回顾 上一篇文章中我们学习了RDD的三种方法分别是filter,distinct,intersection。
ilter()方法是一种转换操作用于过滤RDD中的元素。例如昨天的过滤偶数出来。 当然你也可以选择过滤奇数可以过滤被3整除的数全凭自己所需
distinct方法是一种转换操作用于RDD的数据去重 去除我们的重复数据在一些特定场景能让我们的数据更简洁更直观
intersectio方法用于求出两个RDD的共同元素 现在开始今天的学习吧~
二、RDD方法
1.cartesian
cartesian()方法可将两个集合的元素两两组合成一组即求笛卡儿积。创建两个RDD分别有3个元素通过cartesian()方法求两个RDD的笛卡儿积。
import org.apache.spark.{SparkConf, SparkContext}object p1 {def main(args: Array[String]): Unit {val confnew SparkConf().setMaster(local).setAppName(p2)val scnew SparkContext(conf)val p1 sc.parallelize(Seq(1, 2, 3))val p2 sc.parallelize(Seq(A, B, C))// 对两个RDD执行cartesian操作val pp p1.cartesian(p2)val ppp pp.collect()ppp.foreach { case (x, y) println(s($x, $y)) }}
} 可以看到我我们创建了两个集合为p1和p2再使用cartesian进行求笛卡尔积最后已每个输出为仅有xy两个元素的元组形式进行遍历输出。
运行代码看看结果 可以看到成功输出了笛卡尔积
2.subtract
subtract()方法用于将前一个RDD中在后一个RDD出现的元素删除可以认为是求补集的操作返回值为前一个RDD去除与后一个RDD相同元素后的剩余值所组成的新的RDD。两个RDD的顺序会影响结果。创建两个RDD分别为rdd1和rdd2包含相同元素和不同元素通过subtract()方法求rdd1和rdd2彼此的补集。
import org.apache.spark.{SparkConf, SparkContext}object p1 {def main(args: Array[String]): Unit {val confnew SparkConf().setMaster(local).setAppName(p2)val scnew SparkContext(conf)val p1 sc.parallelize(Seq(1, 2, 3, 4, 5))val p2 sc.parallelize(Seq(3, 4, 5, 6, 7))// 对p1执行subtract操作移除p2中存在的元素val pp p1.subtract(p2)val ppp pp.collect()ppp.foreach(println)}
}
可以看到我们的代码创建了一个p1与p2它们中间有共同元素345那么对p1使用 subtract方法移除与p2共同元素后打印出来应该只有1与2现在我们运行代码看看是否与所预期一致。 可以看到成功输出12代码有效快去练习吧~
拓展-方法参数设置与笛卡尔积
1.方法参数设置 a.cartesian方法
参数/属性说明使用例子不同参数/属性的效果RDD2另一个RDD用于计算笛卡尔积RDD1.cartesian(RDD2)不同的RDD2会导致不同的笛卡尔积结果。笛卡尔积的大小是RDD1和RDD2大小的乘积。随着RDD1和RDD2的大小增加笛卡尔积的结果集急剧增大。合适的分区策略可以提高cartesian操作的性能。
b. subtract方法
参数/属性说明使用例子不同参数/属性的效果RDD2从当前RDD中去除与RDD2相同的元素RDD1.subtract(RDD2)不同的RDD2会导致从RDD1中去除的元素数量和内容不同。numPartitions可选结果RDD的分区数量RDD1.subtract(RDD2, numPartitions)如果指定则控制结果RDD的分区数量影响计算的并行度和性能。如果不指定通常使用默认分区策略。数据分布RDD中数据的分布情况不均匀的数据分布可能导致某些分区上的计算任务比其他分区更重。优化的数据分布可以提高subtract操作的性能。重复元素RDD中可能存在的重复元素subtract操作不会特殊处理重复元素它们会按照正常规则被去除或保留。
2.笛卡尔积 笛卡尔积是数学术语又称直积。假设集合A{a,b}集合B{0,1,2}则A和B的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。可以扩展到多个集合。类似的多个二元组集合的笛卡尔积是各集合中所有二元组的一个组合组合的前提是各集合中的二元组数目相等。做笛卡尔积的两个集合A和B中可以不含有重复元素也可以包含重复元素。
在大数据中笛卡尔积的作用主要体现在数据组合和扩展方面。具体来说当需要对两个或多个数据集进行组合时可以使用笛卡尔积来生成所有可能的组合。这种组合方式在数据分析、数据挖掘以及机器学习等领域中非常有用因为它可以帮助我们创建更丰富的数据集以便进行更深入的分析和建模。