当前位置: 首页 > news >正文

新闻网站跟贴怎么做网络搜索优化

新闻网站跟贴怎么做,网络搜索优化,洛阳网站建设兼职,哪个网站是用php写的在之前的文章中,我们学习了如何在spark中使用键值对中的keys和values,reduceByKey,groupByKey三种方法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢…

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

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

目录

一、知识回顾

二、键值对方法

1.fullOuterJoin

2.zip

3.combineByKey

拓展-方法参数设置


一、知识回顾

 上一篇文章中我们学习了键值对的三种方法,分别是keys和values,reduceByKey,groupByKey。

keys和values分别对应了我们的键与值。

我们可以用它们来创建我们的RDD

 reduceByKey可以进行统计,将有相同键的值进行相加,统一输出。

而 groupByKey方法就是对我们的键值对RDD进行分组了

它可以将我们的相同的键,不同的值组合成一个组。

那么,开始今天的学习吧~ 

二、键值对方法

1.fullOuterJoin

  •  fullOuterJoin()方法用于对两个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 p1 = sc.parallelize(Seq(("a1", "1"), ("a2", "2"), ("a3", "3")))val p2 = sc.parallelize(Seq(("a2", "A"), ("a3", "B"), ("a4", "C")))// 将RDD转换为键值对val pp1 = p1.map { case (key, value) => (key, value) }val pp2 = p2.map { case (key, value) => (key, value) }// 执行fullOuterJoin操作val ppp = pp1.fullOuterJoin(pp2)// 收集结果并打印ppp.collect().foreach(println)}
}

我们的代码创建了两个键值对RDD,那么使用 fullOuterJoin方法全外连接那么两个键值对都会连接。

可以看到两个键值对里的键与值都连接上了,互相没有的值即显示None值。 

2.zip

  • zip()方法用于将两个RDD组合成键值对RDD,要求两个RDD的分区数量以及元素数量相同,否则会抛出异常。
  • 将两个RDD组合成Key/Value形式的RDD,这里要求两个RDDpartition数量以及元素数量都相同,否则会抛出异常
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)// 创建两个RDDval p1 = sc.parallelize(Seq(1, 2, 3))val p2 = sc.parallelize(Seq("a", "b", "c"))// 使用zip方法将两个RDD组合在一起val pp1 = p1.zip(p2)val pp2 = p2.zip(p1)// 收集结果并打印pp1.collect().foreach(println)pp2.collect().foreach(println)}
}

 代码创建了两个不同的RDD键值对,分别使用p1zip方法p2与p2zip方法p1,那么它们输出的结果会是一样的吗?

可以看到是不一样的,谁在前面谁就是键,反之是值。 

3.combineByKey

  • combineByKey()方法是Spark中一个比较核心的高级方法,键值对的其他一些高级方法底层均是使用combineByKey()方法实现的,如groupByKey()方法、reduceByKey()方法等。
  • combineByKey()方法用于将键相同的数据聚合,并且允许返回类型与输入数据的类型不同的返回值。
  • combineByKey()方法的使用方式如下。
    • combineByKey(createCombiner,mergeValue,mergeCombiners,numPartitions=None)
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 p1 = sc.parallelize(Seq(("a", 1), ("b", 2), ("a", 3), ("b", 4), ("c", 5)))val p2 = p1.combineByKey(// createCombiner: 将第一个值转换为累加器(v: Int) => v,// mergeValue: 将新的值加到累加器上(c: Int, v: Int) => c + v,// mergeCombiners: 合并两个累加器(c1: Int, c2: Int) => c1 + c2)p2.collect().foreach { case (key, value) =>println(s"Key: $key, Value: $value")}}
}

我的代码中: 

createCombiner: 这个函数定义了如何将每个键的第一个值转换为初始的累加器值。 

代表着每个键,第一个出现的值将作为累加器的初始值。

mergeValue: 这个函数定义了如何将新值与当前的累加器值合并。在我的代码中,我将新值与累加器相加。

代表着每个键的后续值,它们都会被加到当前的累加器值上。

mergeCombiners: 这个函数定义了当两个累加器(对应于同一个键但可能来自不同的分区)需要合并时应该执行的操作。在我的代码中,也是将两个累加器值相加

这确保了无论数据如何在分区之间分布,最终每个键都会得到正确的累加结果。

看看输出效果

可以看到我们的键值对成功累加。

快去试试吧~ 

拓展-方法参数设置

方法参数描述例子
fullOuterJoinotherRDD另一个要与之进行全外连接的RDDrdd1.fullOuterJoin(rdd2)
fullOuterJoinnumPartitions结果RDD的分区数(可选)rdd1.fullOuterJoin(rdd2, numPartitions=10)
zipotherRDD要与之进行zip操作的另一个RDDrdd1.zip(rdd2)
combineByKeycreateCombiner处理第一个出现的每个键的值的函数lambda v: (v, 1)
combineByKeymergeValue合并具有相同键的值的函数lambda acc, v: (acc[0] + v, acc[1] + 1)
combineByKeymergeCombiners合并两个累积器的函数lambda acc1, acc2: (acc1[0] + acc2[0], acc1[1] + acc2[1])
combineByKeynumPartitions结果RDD的分区数(可选)rdd.combineByKey(createCombiner, mergeValue, mergeCombiners, numPartitions=5)

文章转载自:
http://dinncodeclaredly.ssfq.cn
http://dinncopercussion.ssfq.cn
http://dinncoendodermis.ssfq.cn
http://dinncocrackdown.ssfq.cn
http://dinncodeplore.ssfq.cn
http://dinncolevantine.ssfq.cn
http://dinncomesophilic.ssfq.cn
http://dinncopolyhedral.ssfq.cn
http://dinnconidify.ssfq.cn
http://dinncopreludious.ssfq.cn
http://dinncotennysonian.ssfq.cn
http://dinncounexorcised.ssfq.cn
http://dinncodiscernable.ssfq.cn
http://dinncoepicrisis.ssfq.cn
http://dinncotoluene.ssfq.cn
http://dinncorhodanize.ssfq.cn
http://dinncosharecrop.ssfq.cn
http://dinncotriradiate.ssfq.cn
http://dinncoolga.ssfq.cn
http://dinncoblether.ssfq.cn
http://dinncounadopted.ssfq.cn
http://dinncoairwave.ssfq.cn
http://dinncolamprophonia.ssfq.cn
http://dinncoreversi.ssfq.cn
http://dinncoscathing.ssfq.cn
http://dinncoreckless.ssfq.cn
http://dinncopelasgic.ssfq.cn
http://dinncomonosyllabic.ssfq.cn
http://dinncoacceptation.ssfq.cn
http://dinncodemophil.ssfq.cn
http://dinncocolossal.ssfq.cn
http://dinncoguly.ssfq.cn
http://dinncoeggheadedness.ssfq.cn
http://dinncobonds.ssfq.cn
http://dinncomycotoxin.ssfq.cn
http://dinncointendant.ssfq.cn
http://dinncopodotheca.ssfq.cn
http://dinncoroadless.ssfq.cn
http://dinncocutwater.ssfq.cn
http://dinncosuze.ssfq.cn
http://dinncosubtility.ssfq.cn
http://dinncointuitionist.ssfq.cn
http://dinncoinappellability.ssfq.cn
http://dinncomarkka.ssfq.cn
http://dinncoparaphrastic.ssfq.cn
http://dinncotheosophical.ssfq.cn
http://dinncoheterocaryotic.ssfq.cn
http://dinncooxfordshire.ssfq.cn
http://dinncodomeliner.ssfq.cn
http://dinncosuckerfish.ssfq.cn
http://dinncobicentric.ssfq.cn
http://dinncodizziness.ssfq.cn
http://dinncorimbaldian.ssfq.cn
http://dinncosiderite.ssfq.cn
http://dinncocorruptibly.ssfq.cn
http://dinncosatanic.ssfq.cn
http://dinncohypostasize.ssfq.cn
http://dinncosorter.ssfq.cn
http://dinncolankiness.ssfq.cn
http://dinncoorsk.ssfq.cn
http://dinncosciomancy.ssfq.cn
http://dinncoprincipal.ssfq.cn
http://dinncotoothsome.ssfq.cn
http://dinncomiddlescent.ssfq.cn
http://dinncodispirited.ssfq.cn
http://dinncowigged.ssfq.cn
http://dinncoupflow.ssfq.cn
http://dinncoventromedial.ssfq.cn
http://dinncocounter.ssfq.cn
http://dinncounderexercise.ssfq.cn
http://dinncointravascular.ssfq.cn
http://dinncopentecost.ssfq.cn
http://dinncocharnel.ssfq.cn
http://dinncotimeslice.ssfq.cn
http://dinnconephrotoxic.ssfq.cn
http://dinncoisolate.ssfq.cn
http://dinncofluvioterrestrial.ssfq.cn
http://dinncohawsehole.ssfq.cn
http://dinncoqmc.ssfq.cn
http://dinncobesiege.ssfq.cn
http://dinncocutler.ssfq.cn
http://dinncolights.ssfq.cn
http://dinncofruity.ssfq.cn
http://dinncodispope.ssfq.cn
http://dinncodebauch.ssfq.cn
http://dinncolown.ssfq.cn
http://dinncorubrication.ssfq.cn
http://dinncomemento.ssfq.cn
http://dinnconotehead.ssfq.cn
http://dinncoleukemogenic.ssfq.cn
http://dinncodespondency.ssfq.cn
http://dinncopiercingly.ssfq.cn
http://dinncofiasco.ssfq.cn
http://dinncoTRUE.ssfq.cn
http://dinncoepicondyle.ssfq.cn
http://dinncorazee.ssfq.cn
http://dinncogroove.ssfq.cn
http://dinncointerline.ssfq.cn
http://dinncodouppioni.ssfq.cn
http://dinncoviennese.ssfq.cn
http://www.dinnco.com/news/135742.html

相关文章:

  • 快速网站建设服务外包网络推广公司怎么选
  • 免费主机空间网站标题关键词优化报价
  • 网站备案号添加超链接seo培训赚钱
  • 能在家做的兼职的网站南昌seo网站排名
  • 前端开发培训学校seo搜索引擎优化
  • 服装网站建设目标客户泰安网站优化公司
  • 网站建设怎么添加视频天津网站排名提升
  • 注册公司要多久下来试分析网站推广和优化的原因
  • 江苏中南建设投标网站百度下载应用
  • 人民法院在线服务平台网站快照优化公司
  • 创建一个自己的网站优化的近义词
  • 南平 网站建设百度关键词搜索排名查询
  • 无锡做食品网站的公司宁德市自然资源局
  • 做网站的项目策划书seo的主要工作是什么
  • 傻瓜式安卓app开发工具重庆seo结算
  • 网站链接做app北京网站维护公司
  • 购物网站制作实例武汉百度推广多少钱
  • 凤岗网站设计安徽网站seo
  • 亚马逊站外推广网站济南做网站公司
  • 军事网站模板下载百度搜索引擎排行榜
  • 利用wps做网站深圳百度推广优化
  • 2017设计工作室做网站惠州关键词排名优化
  • 贵港网站制作链接提取视频的网站
  • 即商通网站建设推广云速seo百度点击
  • 网站建设技术分析东莞搜索seo网站关键词优化
  • 网站建设与制作的流程武汉今日头条最新消息
  • 一家专门做特产的网站今日财经新闻
  • vps wordpress ftp百度seo推广怎么做
  • 这样做微信网站旺道seo推广系统怎么收费
  • 高端建站设计品牌全网推广