spark reducebykey计算多个value的值?如图

问题描述

解决方案

解决方案二:
引用楼主Yt_Sports的回复:reducebykey只能是key-value的形式,你这里是三元tuple了,你可以先处理一行之后再reducebykey
解决方案三:
JavaPairRDD<String,String>rdd1=lines.mapToPair(newPairFunction<String,String,String>(){@OverridepublicTuple2<String,String>call(Stringarg0)throwsException{Stringtemp=arg0.split("")[0];Stringtemp2=arg0.split("")[1];Stringtemp3=arg0.split("")[2];returnnewTuple2<String,String>(temp,temp2+"-"+temp3);}});JavaPairRDD<String,String>rdd2=rdd1.reduceByKey(newFunction2<String,String,String>(){@OverridepublicStringcall(Stringarg0,Stringarg1)throwsException{inta=Integer.parseInt(arg0.split("-")[0]);inta2=Integer.parseInt(arg1.split("-")[0]);Stringaa=String.valueOf(a+a2);intb=Integer.parseInt(arg0.split("-")[1]);intb2=Integer.parseInt(arg1.split("-")[1]);Stringbb=String.valueOf(b+b2);returnaa+"-"+bb;}});JavaRDD<String>rdd3=rdd2.map(newFunction<Tuple2<String,String>,String>(){@OverridepublicStringcall(Tuple2<String,String>arg0)throwsException{Stringlines=arg0._1()+""+arg0._2.split("-")[0]+""+arg0._2.split("-")[1];returnlines;}});System.out.println(rdd3.collect());输入num1020num1122name2233cmj33221输出[cmj33221,num2142,name2233]
解决方案四:
用不着字符串拼接,先用map转换一下类型就好scala>valcm=c.map(e=>(e._1,(e._2,0)))cm:org.apache.spark.rdd.RDD[(String,(Int,Int))]=MapPartitionsRDD[25]atmapat<console>:23scala>valcr=cm.reduceByKey((e1,e2)=>(e1._1+e2._1,e1._1/2+e2._1/2))cr:org.apache.spark.rdd.RDD[(String,(Int,Int))]=ShuffledRDD[26]atreduceByKeyat<console>:25scala>valcz=cr.map(e=>(e._1,e._2._1,e._2._2))cz:org.apache.spark.rdd.RDD[(String,Int,Int)]=MapPartitionsRDD[27]atmapat<console>:27scala>cz.collectres15:Array[(String,Int,Int)]=Array((b,3,1),(a,6,2),(c,1,0))scala>valc=sc.parallelize(List(("a",1),("a",2),("a",3),("b",1),("b",2),("c",1)))c:org.apache.spark.rdd.RDD[(String,Int)]=ParallelCollectionRDD[28]atparallelizeat<console>:21

时间: 2024-09-20 06:34:03

spark reducebykey计算多个value的值?如图的相关文章

Spark Streaming场景应用- Spark Streaming计算模型及监控

Spark Streaming是一套优秀的实时计算框架.其良好的可扩展性.高吞吐量以及容错机制能够满足我们很多的场景应用.本篇结合我们的应用场景,介结我们在使用Spark Streaming方面的技术架构,并着重讲解Spark Streaming两种计算模型,无状态和状态计算模型以及该两种模型的注意事项;接着介绍了Spark Streaming在监控方面所做的一些事情,最后总结了Spark Streaming的优缺点. 一.概述 数据是非常宝贵的资源,对各级企事业单均有非常高的价值.但是数据的爆

安装VSTO文件时,提示为文件dll计算出的哈希值与清单中的指定值不同

问题描述 用VS2010生成的VSTO文件,安装时提示错误:为文件Word.UI.dll计算出的哈希值与清单中的指定值不同.项目也没有使用clickonce发布,详细提示如下:System.Deployment.Application.InvalidDeploymentException:为文件Word.UI.dll计算出的哈希值与清单中的指定值不同.在Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeplo

如何高效地计算出一个有向无环图中各个节点的祖先节点数和后代节点数?

问题描述 如何高效地计算出一个有向无环图中各个节点的祖先节点数和后代节点数? 数据量较大,希望复杂度尽量低.现在实现图的数据结构是用HashMap记录对应标号的节点,再分别对每个节点使用HashMap记录子节点.感谢!

vs2012-VS2012调试窗口无名称和值 如图

问题描述 VS2012调试窗口无名称和值 如图 我在按F5调试后,下面的名称和值没有任何反应这是怎么回事? 解决方案 工程不用优化,选择sebug,然后再重新编译.调试

Spark 实时计算整合案例

1.概述 最近有同学问道,除了使用 Storm 充当实时计算的模型外,还有木有其他的方式来实现实时计算的业务.了解到,在使用 Storm 时,需要编写基于编程语言的代码.比如,要实现一个流水指标的统计,需要去编写相应的业务代码,能不能有一种简便的方式来实现这一需求.在解答了该同学的疑惑后,整理了该实现方案的一个案例,供后面的同学学习参考. 2.内容 实现该方案,整体的流程是不变的,我这里只是替换了其计算模型,将 Storm 替换为 Spark,原先的数据收集,存储依然可以保留. 2.1 Spar

由GDTR计算GDT的一些相关值

读张银奎老师的<软件调试>一书,其中一节讲保护模式中分段机制,举了一个例子,用WinDBG观察GDTR和LDTR值,并由此得出一些结论,实例如下: kd> r gdtr gdtr=8003f00 kd> r idtr idtr=8003f400 kd>r gdtl gdtl=000003ff kd>r idtl idtl=000007ff   结论是:GDT的边界是1023,总长度是1024字节,共有128个表项        IDT的表长度是2048字节,共有256项

delphi编程计算数据库某字段的值

在数据库中,有时需要做汇总工作,那么就要对某个字段的所有记录进行求和,我们使用如下代码: 先定义一个全局变量i,再加入Table1的OnCalcFields事件,那么就得出了数据库中"金额"字段的合计值 var i:double;{$R *.DFM} procedure TForm1.Table1CalcFields(dataset: Tdataset);varGoodsgold:double;beginGoodsgold:=table1.fieldbyname(金额).asfloat

用PHP编程计算中序表达式的值

编程 过程: 用class 模拟链表实现堆栈 .:p 完整测试程序地址: http://test.hightman.net/stack/stack_05.php 在表单里可输入: (3+5)/2 之类的表达试,支持 ()+-/*以下为全部代码 <?php/* =================== Program Description ==================== *//* Written by MingLian Mar. (hightman)                   

Spark计算过程分析

基本概念 Spark是一个分布式的内存计算框架,其特点是能处理大规模数据,计算速度快.Spark延续了Hadoop的MapReduce计算模型,相比之下Spark的计算过程保持在内存中,减少了硬盘读写,能够将多个操作进行合并后计算,因此提升了计算速度.同时Spark也提供了更丰富的计算API. MapReduce是Hadoop和Spark的计算模型,其特点是Map和Reduce过程高度可并行化:过程间耦合度低,单个过程的失败后可以重新计算,而不会导致整体失败:最重要的是数据处理中的计算逻辑可以很