日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大数据学习——MapReduce学习——字符统计WordCount

發布時間:2025/5/22 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大数据学习——MapReduce学习——字符统计WordCount 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

操作背景

jdk的版本為1.8以上

ubuntu12

hadoop2.5偽分布

安裝 Hadoop-Eclipse-Plugin

要在 Eclipse 上編譯和運行 MapReduce 程序,需要安裝 hadoop-eclipse-plugin,可下載 Github 上的?hadoop2x-eclipse-plugin(備用下載地址:http://pan.baidu.com/s/1i4ikIoP)。

下載后,將 release 中的 hadoop-eclipse-kepler-plugin-2.6.0.jar (還提供了 2.2.0 和 2.4.1 版本)復制到 Eclipse 安裝目錄的 plugins 文件夾中,運行?

eclipse -clean?重啟 Eclipse 即可(添加插件后只需要運行一次該命令,以后按照正常方式啟動就行了)。

配置 Hadoop-Eclipse-Plugin

在繼續配置前請確保已經開啟了 Hadoop

?

1. 按照如下流程進入Hadoop Map/Reduce界面

Window--》Preference--》Hadoop Map/Reduce

點擊右側的Browse...選擇Hadoop的安裝路徑,然后點擊ok即可

2.按照如下操作到切換 Map/Reduce 開發視圖

Window--》Open Perspective--》Other

彈出一個窗口選擇Map/Reduce即可

3.建立與 Hadoop 集群的連接

點擊 Eclipse軟件右下角的 Map/Reduce Locations 面板,在面板中單擊右鍵,選擇 New Hadoop Location

在彈出的General選項面板里

設置兩處

1.Location Name隨便寫就是連接名

2.DFS Master的Port與fs.defaultFS(設置為hdfs://localhost:9000)的端口號相同為9000?

設置完成以后配置好后,點擊左側 Project Explorer 中的 MapReduce Location (點擊三角形展開)就能直接查看 HDFS 中的文件列表了,雙擊可以查看內容,右鍵點擊可以上傳、下載、刪除?

在 Eclipse 中創建 MapReduce 項目

?

用剛剛創建的Map/Reduce視圖新建目錄mymapreduce1/in,在此目錄下上傳文件文件名為buyer_favorite1,

這個文件的目錄和名字可以自行修改,但要注意修改代碼中的Path in的路徑和文價名

此文件為某電商網站用戶對商品的收藏數據,記錄了用戶收藏的商品id以及收藏日期

buyer_favorite1包含:買家id,商品id,收藏日期這三個字段

內容如下

買家id 商家id 收藏日期 10181 1000481 2010-04-04 16:54:31 20001 1001597 2010-04-07 15:07:52 20001 1001560 2010-04-07 15:08:27 20042 1001368 2010-04-08 08:20:30 20067 1002061 2010-04-08 16:45:33 20056 1003289 2010-04-12 10:50:55 20056 1003290 2010-04-12 11:57:35 20056 1003292 2010-04-12 12:05:29 20054 1002420 2010-04-14 15:24:12 20055 1001679 2010-04-14 19:46:04 20054 1010675 2010-04-14 15:23:53 20054 1002429 2010-04-14 17:52:45 20076 1002427 2010-04-14 19:35:39 20054 1003326 2010-04-20 12:54:44 20056 1002420 2010-04-15 11:24:49 20064 1002422 2010-04-15 11:35:54 20056 1003066 2010-04-15 11:43:01 20056 1003055 2010-04-15 11:43:06 20056 1010183 2010-04-15 11:45:24 20056 1002422 2010-04-15 11:45:49 20056 1003100 2010-04-15 11:45:54 20056 1003094 2010-04-15 11:45:57 20056 1003064 2010-04-15 11:46:04 20056 1010178 2010-04-15 16:15:20 20076 1003101 2010-04-15 16:37:27 20076 1003103 2010-04-15 16:37:05 20076 1003100 2010-04-15 16:37:18

點擊File--》New--》Other找到Map/Reduce Project點擊創建即可。

然后將以下代碼放到項目中

代碼是是統計每個買家收藏商品數量

import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;public class WordCount {public static void main(String[] args) throws IOException,ClassNotFoundException, InterruptedException {Job job = Job.getInstance();job.setJobName("WordCount");job.setJarByClass(WordCount.class);job.setMapperClass(doMapper.class);job.setReducerClass(doReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);//這個路徑是存放用戶收藏商品的信息Path in = new Path("hdfs://localhost:9000/mymapreduce1/in/buyer_favorite1");//這個路徑也可自行設置,但是路徑必須不存在Path out = new Path("hdfs://localhost:9000/mymapreduce1/out");FileInputFormat.addInputPath(job, in);FileOutputFormat.setOutputPath(job, out);System.exit(job.waitForCompletion(true) ? 0 : 1);}/*** * 第一個Object表示輸入key的類型;第二個Text表示輸入value的類型;*第三個Text表示表示輸出鍵的類型;第四個IntWritable表示輸出值的類型*/public static class doMapper extendsMapper<Object, Text, Text, IntWritable> {public static final IntWritable one = new IntWritable(1);public static Text word = new Text();protected void map(Object key, Text value, Context context)throws IOException, InterruptedException {//StringTokenizer是Java工具包中的一個類,用于將字符串進行拆分 //StringTokenizer構造函數的第二個參數是分割符,確認文件中的分割符是三個空格或者一個tabStringTokenizer tokenizer = new StringTokenizer(value.toString()," ");word.set(tokenizer.nextToken());context.write(word, one);}}//參數同Map一樣,依次表示是輸入鍵類型,輸入值類型,輸出鍵類型,輸出值類型public static class doReducer extendsReducer<Text, IntWritable, Text, IntWritable> {private IntWritable result = new IntWritable();@Overrideprotected void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {int sum = 0;for (IntWritable value : values) {sum += value.get();}result.set(sum);context.write(key, result);}} }

右鍵此Map/Reduce Project=>Run As=>Run on Hadoop

Map/Reduce視圖工具查看輸出目錄中的part-r-00000文件

結果如下

參考資料

http://dblab.xmu.edu.cn/blog/hadoop-build-project-using-eclipse/?tdsourcetag=s_pcqq_aiomsg

轉載于:https://www.cnblogs.com/wei-jing/p/9971690.html

總結

以上是生活随笔為你收集整理的大数据学习——MapReduce学习——字符统计WordCount的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。