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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

IDEA+Maven运行调试MapReduce程序

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IDEA+Maven运行调试MapReduce程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

IDEA+Maven運行調試MapReduce程序

文章目錄

  • IDEA+Maven運行調試MapReduce程序
    • 新建java類
    • 配置輸入文件路徑
    • 修改level參數
    • 添加Application配置
    • 運行
    • 調試
    • 常見報錯
      • Error:java: 不支持發行版本 5
      • 系統找不到指定的文件
      • Windows下的權限問題
    • 參考博客

新建java類

在項目的左側文件目錄中,選擇 srcsrcsrc -> mainmainmain -> javajavajava,鼠標右鍵點擊,選擇 NewNewNew -> JavaClassJava ClassJavaClass

在彈窗中輸入你想要建類的名字,回車即可。這里我們使用Hadoop官方給出的教程代碼 WordCount

在剛才建立的 WordCount類中添加代碼,WordCount對輸入文件字符進行計數,輸出計數的結果。

import java.io.IOException; import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration; 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; import org.apache.hadoop.util.GenericOptionsParser;public class WordCount {public static class TokenizerMapperextends Mapper<Object, Text, Text, IntWritable> {private final static IntWritable one = new IntWritable(1);private Text word = new Text();public void map(Object key, Text value, Context context) throws IOException, InterruptedException {StringTokenizer itr = new StringTokenizer(value.toString());while (itr.hasMoreTokens()) {word.set(itr.nextToken());context.write(word, one);}}}public static class IntSumReducerextends Reducer<Text, IntWritable, Text, IntWritable> {private IntWritable result = new IntWritable();public void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {int sum = 0;for (IntWritable val : values) {sum += val.get();}result.set(sum);context.write(key, result);}}public static void main(String[] args) throws Exception {Configuration conf = new Configuration();String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();if (otherArgs.length < 2) {System.err.println("Usage: wordcount <in> [<in>...] <out>");System.exit(2);}Job job = Job.getInstance(conf, "word count");job.setJarByClass(WordCount.class);job.setMapperClass(TokenizerMapper.class);job.setCombinerClass(IntSumReducer.class);job.setReducerClass(IntSumReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);for (int i = 0; i < otherArgs.length - 1; ++i) {FileInputFormat.addInputPath(job, new Path(otherArgs[i]));}FileOutputFormat.setOutputPath(job,new Path(otherArgs[otherArgs.length - 1]));System.exit(job.waitForCompletion(true) ? 0 : 1);} }

配置輸入文件路徑

bigdatabigdatabigdata 下新建一個 inputinputinput 文件夾,添加一個或者多個文件到 inputinputinput 中。注意 input 和 src 是同級目錄

鼠標右鍵點擊 bigdata,選擇 NewNewNew -> DirectoryDirectoryDirectory

在新彈窗的“NAME”中輸入名字“input”

這時候我們看到,input文件夾已經建立成功,我們在里面導入需要的輸入文件就可以了

修改level參數

在IDEA菜單欄中點擊 FileFileFile -> ProjectStructureProject StructureProjectStructure

在新窗口的左側 Project Setting 中選擇 Project ,查看moduls版本,這里可以看到我的版本是10

Project Setting 選擇 Modules,將 sources 選項卡下的 Language-level 改為對應版本,這里我們選擇10,點擊OK

添加Application配置

在IDEA的菜單欄中點擊 RunRunRun -> EditConfigurationsEdit ConfigurationsEditConfigurations

在新窗口中點擊左上方的加號,選擇 Application

配置步驟依次為:

  • 在 Application 的 Name 填寫你要運行時選擇的名字,這里我們改為 WordCount。
  • 在 Main class 選擇為你要運行的程序,點擊右邊的???···???就可以選擇,這里我們選擇WordCount
  • 在 Program arguments 填寫 input/output/input/ output/input/output/,意味著輸入路徑為剛才創建的 input 文件夾,輸出為 output。這個 output 系統會自動創建。注意 input/ 和 output/ 之間有一個空格,這表示 input 和 output 是兩個參數。
  • 配置完畢,點擊OK
  • 運行

    在input文件夾中先導入你需要用到的輸入文件。將文件復制一下,再進入 IDEA ,對著 input 文件夾點擊鼠標右鍵,點擊 Paste,彈窗點擊OK,就可以將文件粘貼進入 input 中。導入文件成功后,就可以開始運行程序了。

    如果要刪除文件也很簡單,選中文件,右擊鼠標,選擇 Delete 刪除即可

    運行程序有兩種常用方式,直接點擊右上角的綠色三角運行符號,或者在程序中右鍵空白處再點擊運行

    點擊開始運行之后,IDEA 下方會顯示 Hadoop 的運行輸出。待程序運行完畢后,IDEA 的左側項目目錄會出現新的文件夾 output,里面存放的 part-r-00000 就是運行的結果了!

    調試

    調試的時候需要先加上斷點,我們在需要調試的代碼前單擊加上斷點,鼠標右擊空白處,選擇 Debug ‘WordCount’ 就可以開始調試,程序會在斷點處停下。

    常見報錯

    Error:java: 不支持發行版本 5

    本地運行的是 JDK10,這個報錯的原因是項目編譯配置使用的 Java 版本不對

  • IDEA菜單欄中點擊 “File -> Project Structure”,查看“Project”和“Modules”中Java版本和本地Java版本是不是一致。如果不一致,改成本地使用的Java版本。

  • IDEA菜單欄中點擊 “File” -> “Setting”,選擇 “Bulid, Execution,Deployment” -> “Compiler” -> “Java Compiler”,把項目的 Target bytecode version 設置為本地版本,同時把
    Project bytecode version 也改為本地版本。

  • 這兩步修改完之后,這個錯誤就被解決了

    系統找不到指定的文件

    Exception in thread “main” java.io.IOException: Cannot run program “chmod”: CreateProcess error=2, 系統找不到指定的文件。

    如果遇到這個錯誤,是因為 Windows 下需要安裝 x64 cygwin。

    解決方法是,到 cygwin 官網下載 setup-x86_64.exe,安裝之后,把 bin 目錄配置到 Windows 的環境變量 path 中,重啟 IDEA 就可以了。

    具體的 Cygwin 安裝過程請參考這篇博客 windows 安裝cygwin教程

    Windows下的權限問題

    Windows下的權限錯誤有兩種。第一種:

    ERROR security.UserGroupInformation: PriviledgedActionException as …

    第二種:

    Exception in thread “main” java.io.IOException: Failed to set permissions of path: …

    這都是因為當前用戶沒有權限來設置路徑權限(Linux就不會遇到這個問題)

    解決方法有三種:

  • 給hadoop打補丁,Hadoop解決windows下權限問題,這個方法適合于Hadoop環境,因為這里我們使用的是Maven,此方法不適合。
  • 將當前用戶設置為超級管理員,或以超級管理員登錄運行此程序。(這個方法好像失效了,推薦使用第三種方法)
  • 將 Hadoop-core 的版本進行回退。首先,我們查看 pom.xml 的 hadoop-core 版本。如果版本是1.2.1 及以上的,將版本設置為 0.20.2 ,重新導入依賴。之后,相應的 main 方法里面的 Job job = Job.getInstance(conf, “word count”); 改成 Job job = new Job(conf, “word count”); 這樣問題就解決了。
  • 運行Hadoop,真心建議還是使用 Linux 或者 MacOS,Windows下錯誤太多了。

    參考博客

    參考博客 Hadoop: Intellij結合Maven本地運行和調試MapReduce程序 (無需搭載Hadoop和HDFS環境)

    參考博客 Intellij idea 報錯:Error : java 不支持發行版本5

    總結

    以上是生活随笔為你收集整理的IDEA+Maven运行调试MapReduce程序的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 精品一区不卡 | 男男gay羞辱feet贱奴vk | 精品一二区 | 成人第四色 | 久久久91精品国产一区二区三区 | 91精品国产综合久久久久久 | 国产一级一片免费播放放a 丁香六月色 | 91理论片午午伦夜理片久久 | 久久综合中文字幕 | 极品新婚夜少妇真紧 | 五月在线视频 | 亚洲国产综合在线 | 成人av网址大全 | 天天狠狠 | a级在线观看 | 国产精品99久久久久 | 国内久久久 | 女人脱裤子让男人捅 | 欧美高清a| 精品熟妇视频一区二区三区 | 亚洲精品国产精品乱码 | 亚洲欧美另类激情 | 欧美一级黄视频 | 久操国产 | 亚洲av无码专区在线 | 日韩精品在线观看中文字幕 | 欧美日韩乱 | 欧洲精品码一区二区三区免费看 | 日韩欧美精品在线视频 | 青青草原av在线 | 男人的天堂99 | 在线观看精品 | 亚洲欧美日韩综合在线 | 黑人精品欧美一区二区蜜桃 | 精品久久久久一区二区国产 | 久久欧 | 香蕉久久夜色精品 | 欧美aa在线观看 | 日韩欧美网 | 日本国产精品一区 | 四虎精品成人免费网站 | 重囗另类bbwseⅹhd | 扒下小娇妻的内裤打屁股 | 欧美性视频一区二区 | 婷婷久久久久 | av资源新版在线天堂 | 久久亚洲精品视频 | 欧美日韩中出 | 亚洲射吧| 亚洲三级成人 | 99视频在线看 | 九九爱精品视频 | 午夜成人亚洲理伦片在线观看 | 亚洲第一精品网站 | 成人狠狠干 | www操| 久久av不卡 | 成人一级免费视频 | 91免费视| 欧美成人免费看 | 国产亚洲精品久久久久久无几年桃 | 欧亚乱熟女一区二区在线 | 日产精品一区二区 | 久久精品国产99久久不卡 | 色哟哟一区二区三区四区 | 亚洲在线观看免费 | 日韩一区二区在线免费观看 | 国产一区二区小说 | 超碰在线人| 国产区视频在线 | 色爱综合区 | 亚洲国产一区二区三区 | 老头老太吃奶xb视频 | 蜜桃av噜噜一区二区三区麻豆 | 秋霞视频在线观看 | 久久久久97国产 | 亚洲黄在线 | 欧美另类xxx| 好吊妞一区二区三区 | 99国产揄拍国产精品 | 国产精品久久777777 | 亚州精品国产精品乱码不99按摩 | 国产视频手机在线 | 日本一区不卡视频 | 免费爱爱网站 | 欧美精品自拍 | 黑人巨大精品欧美一区二区蜜桃 | 国产片网址 | 99热思思 | 久久久久久九九 | 国产传媒在线观看 | 色综合久久久无码中文字幕波多 | 成人三级黄色 | 玖玖免费| 66亚洲一卡2卡新区成片发布 | 日韩美女爱爱 | 99re这里有精品 | 免费看片网站91 | 亚洲男女激情 |