注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

阿弥陀佛

街树飘影未见尘 潭月潜水了无声 般若观照心空静...

 
 
 

日志

 
 
关于我

一直从事气象预报、服务建模实践应用。 注重气象物理场、实况场、地理信息、本体知识库、分布式气象内容管理系统建立。 对Barnes客观分析, 小波,计算神经网络、信任传播、贝叶斯推理、专家系统、网络本体语言有一定体会。 一直使用Java、Delphi、Prolog、SQL编程。

网易考拉推荐

spark reduceByKey  

2015-01-24 16:46:18|  分类: Spark |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Using reduceByKey in Apache Spark (Scala)

scala> val x = sc.parallelize(List( ("a" , "b" , 1) , ("a" , "b" , 1) , ("c" , "b" , 1) , ("a" , "d" , 1)))
x: org.apache.spark.rdd.RDD[(String, String, Int)] = ParallelCollectionRDD[0] at parallelize at <console>:12

scala> val byKey = x.map({case (id,uri,count) => (id,uri)->count})
byKey: org.apache.spark.rdd.RDD[((String, String), Int)] = MappedRDD[1] at map at <console>:14

scala> val reducedByKey = byKey.reduceByKey(_ + _)
reducedByKey: org.apache.spark.rdd.RDD[((String, String), Int)] = ShuffledRDD[2] at reduceByKey at <console>:16

((a,d),1)
((a,b),2)
((c,b),1)
===========================================================
val rdd: org.apache.spark.rdd.RDD[((String), Array[Double])] =
sc.parallelize(List(
("a", Array[Double](1,2,3)),
("a", Array[Double](1.1,2.1,3.1)),
("b", Array[Double](4,5,6)),
("c", Array[Double](7,8,9)),
("d", Array[Double](10,11,12)),
("d", Array[Double](13,14,15))
))
val ss = rdd.reduceByKey(_ ++ _)
val dd = ss.map(f=>(f._1,f._2.grouped(3).toArray))
dd.collect()
res37: Array[(String, Array[Array[Double]])] = Array((a,Array(Array(1.0, 2.0, 3.0), Array(1.1, 2.1, 3.1))), (b,Array(Array(4.0, 5.0, 6.0))), (c,Array(Array(7.0, 8.0, 9.0))), (d,Array(Array(10.0, 11.0, 12.0), Array(13.0, 14.0, 15.0))))

===========================================================
val txt="00     3772   359.5    51.4    24.0       0.320      -5.100      12.500      -1.500       0.200     999.900     999.900     999.900       0.000     999.900     999.900     999.900\n00     3166   356.6    55.9    57.0       0.700      -8.800      30.800      -2.400       0.400     999.900     999.900     999.900     999.900     999.900     999.900     999.900\n00     3772   359.5    51.4    24.0      -2.880      -7.700      -2.800      -1.500     999.900     999.900     999.900     999.900      -2.400     999.900     999.900     999.900\n00     3166   356.6    55.9    57.0      -4.500     -11.900      26.100       0.200     999.900     999.900     999.900     999.900     999.900     999.900     999.900     999.900\n"
val x = sc.parallelize(txt.split("\n"))
val bykey = x.map{str =>
val words = str.split("\\s+")
val key=words(0)+words(1)
(key,str+"\n")
}
val reducedByKey = bykey.reduceByKey(_ + _)
reducedByKey.collect.foreach(println)


  评论这张
 
阅读(1492)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017