国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Spark入門:實現WordCount的3種方式

大數據 Spark
當我們學習一門新的語言,HelloWorld通常是我們寫的第一個程序。而WordCount基本上是我們學習MapReduce思想與編程的第一個程序,無論是Hadoop的MR或者是Spark的RDD操作學習。

[[170182]]

WordCount作為Spark的入門任務,可以很簡單,也可以做到比較復雜。 本文從實現功能的角度提出了3種實現方式,至于性能影響,會在后文繼續討論。

注意: 本文使用的Spark版本還是1.6.1.如果讀者您已經切換到2.0+版本,請參考GitHub spark的官方例子進行學習。 因為2.0版本的API與1.X 并不能完全兼容,特別是2.0開始使用了SparkSession的概念,而不是SparkContext!

***種方式:mapToPair + reduceByKey

這是官方提供的實現方式,應該也是網上能找到的最多的例子。

官網地址: http://spark.apache.org/examples.html

核心代碼:

  1. JavaRDD<String> textFile = sc.textFile("hdfs://..."); 
  2.  
  3. JavaRDD<String> words = textFile.flatMap(new FlatMapFunction<String, String>() { 
  4.  
  5. public Iterable<String> call(String s) { return Arrays.asList(s.split(" ")); } 
  6.  
  7. }); 
  8.  
  9. JavaPairRDD<String, Integer> pairs = words.mapToPair(new PairFunction<String, String, Integer>() { 
  10.  
  11. public Tuple2<String, Integer> call(String s) { return new Tuple2<String, Integer>(s, 1); } 
  12.  
  13. }); 
  14.  
  15. JavaPairRDD<String, Integer> counts = pairs.reduceByKey(new Function2<IntegerIntegerInteger>() { 
  16.  
  17. public Integer call(Integer a, Integer b) { return a + b; } 
  18.  
  19. }); 
  20.  
  21. counts.saveAsTextFile("hdfs://..."); 

總結上面的步驟:

  1. flatmap : 將一整段文字映射成一個字符串數組
  2. mapToPair: 將word 映射成 (word, 1)
  3. reduceByKey: 按照key進行group and plus的操作, 得到最終結果
  4. collect: 這是Action,上面3個都是Transformation

第二種方式:使用countByValue代替mapToPair + reduceByKey

核心代碼:

  1. JavaRDD<String> textFile = sc.textFile("hdfs://..."); 
  2.  
  3. JavaRDD<String> words = textFile.flatMap(new FlatMapFunction<String, String>() { 
  4.  
  5. public Iterable<String> call(String s) { return Arrays.asList(s.split(" ")); } 
  6.  
  7. }); 
  8.  
  9. Map<String, Long> counts = words.countByValue(); 

讀文件、flatmap這兩步都是完全一樣的,但是后面直接一個countByValue就搞定了,并且還直接collect到本地了,是不是感覺這一種實現方式更簡潔了呢?

至于性能,一般來說這種方式還不錯,但是這種方式有一些缺點,參考StackOverFlow的描述:

網址: http://stackoverflow.com/questions/25318153/spark-rdd-aggregate-vs-rdd-reducebykey

countByValue would be the fastest way to do this, however its implementation uses hash maps and merges them so if you have a large amount of data this approach may not scale well (especially when you consider how many issues spark already has with memory). You may want to use the standard way of counting in map reduce which would be to map the line and 1 as pairs then reduceBykey like this:

簡單的說,這種方式是使用hash的方式進行merge。 如果處理的數據量比較大的時候,效果可能不怎么好。

注意: 這種方式的性能筆者確實還沒有親自實踐過!

第三種方式:AggregateByKey

AggregateByKey 這個方法,可以看做是reduceByKey的增強版,因為reduceByKey的輸出類型與輸入類型要求是完全一致的。比如wordcount 之中的輸入是Tuple2<String, Integer> 輸出也同樣要求是Tuple2<String,Integer>. 但是AggregateByKey的輸出類型可以是不一樣的數據類型。 參考下面的代碼:

  1. val keysWithValuesList = Array("foo=A""foo=A""foo=A""foo=A""foo=B""bar=C""bar=D""bar=D"
  2.  
  3. val data = sc.parallelize(keysWithValuesList) 
  4.  
  5. //Create key value pairs 
  6.  
  7. val kv = data.map(_.split("=")).map(v => (v(0), v(1))).cache() 
  8.  
  9. val initialCount = 0; 
  10.  
  11. val addToCounts = (n: Int, v: String) => n + 1 
  12.  
  13. val sumPartitionCounts = (p1: Int, p2: Int) => p1 + p2 
  14.  
  15. val countByKey = kv.aggregateByKey(initialCount)(addToCounts, sumPartitionCounts) 

輸出:

  1. Aggregate By Key sum Results 
  2.  
  3. bar -> 3 
  4.  
  5. foo -> 5 

可以看到,輸入是<String, String> 而輸出變成了<String, Integer>

注意: 這種方法,并不是處理WordCount的***的選擇,只是說明我們可以使用AggregateByKey這種方式來實現相同的功能

其實還有另外一種實現方式: 使用DataFrame。 但是這種方式需要前期的準備比較多,即如何將數據處理并喂給DataFrame。

一般來說,DataFrame的效率相比其他的RDD的實現方式要高不少,如果在前期準備工作上面難度不是太大的話,非常推薦使用DataFrame的方式。

責任編輯:武曉燕 來源: FlyML
相關推薦

2009-07-02 14:42:55

ExtJS Grid

2020-02-18 20:00:31

PostgreSQL數據庫

2022-08-05 08:27:05

分布式系統線程并發

2015-05-04 10:20:25

2019-01-31 08:15:38

物聯網農業IoT

2020-02-10 15:50:18

Spring循環依賴Java

2017-09-05 10:20:15

2010-03-12 17:52:35

Python輸入方式

2021-11-05 21:33:28

Redis數據高并發

2021-06-24 08:52:19

單點登錄代碼前端

2010-08-13 13:25:53

Flex頁面跳轉

2014-12-31 17:42:47

LBSAndroid地圖

2021-04-01 06:01:10

嵌入式開發應用程序開發技術

2021-07-19 05:48:30

springboot 攔截器項目

2018-04-02 14:29:18

Java多線程方式

2024-07-01 12:42:58

2023-12-04 09:31:13

CSS卡片

2021-12-08 10:47:35

RabbitMQ 實現延遲

2024-10-11 12:00:00

Python批量文件操作

2022-07-01 08:00:44

異步編程FutureTask
點贊
收藏

51CTO技術棧公眾號

91麻豆国产语对白在线观看| 欧美卡1卡2卡| 99热99热| 九九久久婷婷| 欧美精品一区二区三区国产精品| 毛片网站在线看| 欧美性xxxx| 久久白虎精品| 亚洲国产中文字幕在线视频综合| 黄色一级免费大片| av资源中文在线天堂| 午夜精品一区二区三区三上悠亚| jizz欧美激情18| 99精品久久免费看蜜臀剧情介绍| 在线免费一区| 人人精品人人爱| 亚洲日本欧美在线| 奇米在线7777在线精品| 无遮挡亚洲一区| 久久99精品国产麻豆婷婷洗澡| 欧美成ee人免费视频| 精品视频二区| 亚洲激情av在线| 日本中文字幕视频| 亚洲国产精品一区二区www在线 | 一区二区三区在线高清| 国产夫妻视频| 亚洲第一主播视频| 欧美精品video| 久久野战av| 日韩有码在线播放| 久久久久毛片免费观看| 欧美精品videossex性护士| 91成人短视频| 久久人人爽人人爽人人片av高清| 日韩有码av| 国产中文字幕日韩| 91精品动漫在线观看| 久久精品一二三区| 国产一区二区在线看| 成人免费aaa| 日韩不卡视频在线观看| 欧美日韩国产成人高清视频| 欧美日韩色图| 欧美日韩综合久久| 国产91丝袜在线播放| 亚洲欧美日韩一级| 日本道在线观看一区二区| missav|免费高清av在线看| 久久激情视频久久| 99久久精品费精品国产| 日韩av高清在线播放| 伊人久久国产| 日韩中文理论片| 精品freesex老太交| 欧美精品尤物在线| 久久综合九色欧美综合狠狠| 在线国产中文字幕| 亚洲精品第一国产综合精品| 国产乱人伦精品一区| 国产精品夜夜夜一区二区三区尤| 蜜臀av一区二区在线观看| 国产精品涩涩涩视频网站| 中文字幕中文字幕精品| 成人观看高清在线观看免费| 久久精品国产亚洲高清剧情介绍| 伊人影院综合在线| 日韩视频免费观看高清完整版 | 亚洲网站视频| 人妻无码一区二区三区四区| 亚洲素人一区二区| 在线观看三级视频| www.亚洲一区| 中文av一区二区三区| 欧美日韩高清一区| 国产厕拍一区| 鲁鲁狠狠狠7777一区二区| 中文字幕欧美激情| 性国产高清在线观看| 久久久人成影片一区二区三区| 99在线热播精品免费99热| 亚洲综合欧美在线| 6080亚洲精品一区二区| 蜜桃成人av| 国产va亚洲va在线va| 精品视频日韩| 东北少妇不带套对白| 欧洲在线/亚洲| 国产美女亚洲精品7777| 精品国产乱码久久久久久丨区2区| 国产亚洲欧美一区在线观看| 欧美xxxxhdvideosex| 国产欧美精品一区二区三区介绍| 成人国产精品免费网站| 麻豆影视国产在线观看| 国产精品mp4| 日韩福利一区| 国产成人精品最新| 26uuu国产日韩综合| xxxx另类黑人| 国产精选一区二区| 亚洲图片欧美色图| 福利在线一区| 夫妻免费无码v看片| 日韩精品视频在线免费观看| 在线免费高清一区二区三区| 曰韩少妇与小伙激情| 色综合老司机第九色激情| 国产精品资源在线看| 成人在线播放| 精品无人区一区二区三区| 国产精品视频一区二区三区| 国产高清精品软男同| 日韩视频在线你懂得| 在线观看日韩av电影| 国产最新视频在线| 91原创国产| 在线观看一区二区视频| 一区二区免费不卡在线| 最近97中文超碰在线| 国产精品人成电影在线观看| 日韩毛片精品高清免费| 理论片一区二区在线| 青青草av网站| 免费在线看成人av| 少女频道在线观看免费播放电视剧| 国产精品theporn88| 在线免费观看视频一区| 亚洲午夜电影| 国产精品四虎| 久久久久久国产精品mv| 日韩欧美不卡一区| 久久99精品国产91久久来源| 人成在线免费网站| 精品视频在线观看一区二区| 亚洲区中文字幕| 在线观看二区| 精品国产综合| 精品免费国产一区二区三区四区| 久久亚洲国产精品一区二区| 久久不射影院| 无码毛片aaa在线| 久久色在线播放| 国产精品人人做人人爽人人添| 狼人精品一区二区三区在线| 性色a∨人人爽网站| 4444kk亚洲人成电影在线| 欧美精品xxxxbbbb| 久久精品久久99精品久久| 国产精品蜜芽在线观看| 精品视频在线播放| 蜜桃久久久久久| 欧美特大特白屁股xxxx| 337p粉嫩大胆噜噜噜鲁| 91国产精品视频在线| 天天综合日日夜夜精品| av不卡在线| 中文字幕在线视频网站| 无码内射中文字幕岛国片| 国产精品一区二区三区免费视频| 欧美午夜在线一二页| 久久97超碰色| 欧美调教网站| 精品亚洲成a人片在线观看| 欧美日韩国产综合草草| 亚洲色图国产| 超碰97国产精品人人cao| 国产欧美在线一区| 国产精品入口尤物| 精品国精品自拍自在线| 久久蜜桃一区二区| 一区二区三区四区电影| 91超碰在线| 国产小黄视频| 狼狼综合久久久久综合网| 俺去亚洲欧洲欧美日韩| 亚洲一区欧美一区| 精品视频二区| 一区二区三区的久久的视频| 韩国日本不卡在线| 91精品午夜视频| 欧美激情一区二区三区不卡| 在线欧美福利| 日本在线成人| 最新电影电视剧在线观看免费观看| 日b视频免费观看| 国产精品美腿一区在线看| 亚洲福利视频网站| 亚洲欧美日韩久久精品| 日韩av成人高清| 免费久久精品| 极品视频在线| 真不卡电影网| 欧美三级一级片| 久久国产精品 国产精品| 国内精品一区二区三区四区| 精品三级在线看| 亚欧色一区w666天堂| 91在线视频播放地址| 国产农村妇女精品一二区|