maven實現(xiàn)wordcount程序

一迎罗、創(chuàng)建maven項目

需提前自行選定項目工作目錄吊奢。
并在項目目錄下執(zhí)行命令:

mvn archetype:generate

如下圖所示時,按回車

1.png

下面解讀回車之后的操作
2.png

groupId: maven
artifactId:(項目名稱)WordCount
version: 1.0
'package' maven: : org.example
Y: : 按下回車確認,即可創(chuàng)建成功

二研儒、編輯項目文件

2.1在本地創(chuàng)建WordCount.java

在文件中添加如下代碼:

package org.example;
import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
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 class WordCountMap extends Mapper<LongWritable, Text, Text, IntWritable> {
        protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
            String[] strs = value.toString().split(" ");
            for (String str : strs) {
                context.write(new Text(str), new IntWritable(1));
            }
        }
    }


public class WordCountReduce extends Reducer<Text,IntWritable,Text,IntWritable>{
protected void reduce(Text key,Iterable<IntWritable>values,Context context) throws IOException,InterruptedException{
int sum=0;
for(IntWritable val : values){
sum += val.get();
}
context.write(key,new IntWritable(sum));
}
}

public static void main (String[] args) throws Exception{
Configuration conf=new Configuration();
Job job=Job.getInstance(conf);
job.setJarByClass(WordCount.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setMapperClass(WordCountMap.class);
job.setReducerClass(WordCountReduce.class);
FileInputFormat.addInputPath(job,new Path(args[0]));
FileOutputFormat.setOutputPath(job,new Path(args[1]));
job.waitForCompletion(true);
}
}

編輯好之后通過xftp上傳至節(jié)點
此處建議使用xftp上傳文件坟岔,由于maven的目錄過多谒兄,容易出錯

3.png

2.2修改依賴文件

修改pom.xml


5.png

下圖為該文件的初始內容


4.png

對其進行修改

 <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 </properties>

修改為

 <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <java.version>1.8</java.version>
    <hadoop.version>3.1.3</hadoop.version>
    <log4j.version>1.2.14</log4j.version>
    <junit.version>4.8.2</junit.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

刪除
復制下列內容到該文件

<dependencies>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <version>${hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-hdfs</artifactId>
      <version>${hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>${hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4j.version}</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <mainClass>org.example.WordCount</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>

注意!要在</project>之前進行以上操作I绺丁3衅!邻耕!

三、打包項目

進入項目根目錄燕鸽,如圖


6.png

執(zhí)行命令

mvn package
7.png

出現(xiàn)如上圖所示的界面兄世,即為打包成功!C嘣邸碘饼!
(如果有error報錯,請根據(jù)報錯內容檢查并修改程序文件悲伶,以及依賴文件艾恼。
這時候項目文件夾內多了一個 target 文件夾,文件夾內就有我們的 jar 包啦t镲薄钠绍!


8.png

四、運行測試

這里的話就和之前一樣花沉。
啟動 Hadoop
啟動 Yarn
在 hadoop 目錄下創(chuàng)建 test 文件夾柳爽、文件夾內創(chuàng)建 input output 二級目錄
在 input 文件夾內放入 input1.txt input2.txt

hadoop jar WordCount-1.0.jar /test/input /test/output

注意該操作要在jar包所在目錄下進行!
運行界面以及查看結果同之前一致

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末碱屁,一起剝皮案震驚了整個濱河市磷脯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌娩脾,老刑警劉巖赵誓,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異柿赊,居然都是意外死亡俩功,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門碰声,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诡蜓,“玉大人,你說我怎么就攤上這事胰挑÷#” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵洽腺,是天一觀的道長脚粟。 經(jīng)常有香客問我,道長蘸朋,這世上最難降的妖魔是什么核无? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮藕坯,結果婚禮上团南,老公的妹妹穿的比我還像新娘噪沙。我一直安慰自己,他們只是感情好吐根,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布正歼。 她就那樣靜靜地躺著,像睡著了一般拷橘。 火紅的嫁衣襯著肌膚如雪局义。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天冗疮,我揣著相機與錄音萄唇,去河邊找鬼。 笑死术幔,一個胖子當著我的面吹牛另萤,可吹牛的內容都是我干的。 我是一名探鬼主播诅挑,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼四敞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拔妥?” 一聲冷哼從身側響起忿危,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎没龙,沒想到半個月后癌蚁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡兜畸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了碘梢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咬摇。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖煞躬,靈堂內的尸體忽然破棺而出肛鹏,到底是詐尸還是另有隱情,我是刑警寧澤恩沛,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布在扰,位于F島的核電站,受9級特大地震影響雷客,放射性物質發(fā)生泄漏芒珠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一搅裙、第九天 我趴在偏房一處隱蔽的房頂上張望皱卓。 院中可真熱鬧裹芝,春花似錦、人聲如沸娜汁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掐禁。三九已至怜械,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間傅事,已是汗流浹背缕允。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留享完,地道東北人灼芭。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像般又,于是被迫代替她去往敵國和親彼绷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內容