鱼C论坛

 找回密码
 立即注册
查看: 51|回复: 1

hadoop大数据

[复制链接]
发表于 2024-5-10 11:11:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 2531720775 于 2024-5-10 11:12 编辑

hadoop大数据wordcount实例编写driver类遇到以下问题

2024-05-10 10:55:42,480 WARN [org.apache.hadoop.fs.FileUtil] - Failed to delete file or dir [D:\tmp\hadoop\mapred\staging\Ð?¾1450925697\.staging\job_local1450925697_0001\job.xml]: it still exists.
  Exception in thread "main" [com.ctc.wstx.exc.WstxLazyException] com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0xdfb2
at [row,col,system-id]: [403,62,"file:/tmp/hadoop/mapred/staging/Ð?¾1450925697/.staging/job_local1450925697_0001/job.xml"]

                               
登录/注册后可看大图

然后我在job.xml改了非法字符后再次运行,他又出现新的job.xml的路径文件并且还是出现非法字符错误
请问这样的错误怎么改呢

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-5-10 11:11:44 | 显示全部楼层
在编写Hadoop大数据WordCount的Driver类时,可能会遇到以下问题:

1. 如何设置输入和输出路径?

  1. job.setInputFormatClass(TextInputFormat.class);
  2. TextInputFormat.setInputPaths(job, new Path(args[0]));

  3. job.setOutputFormatClass(TextOutputFormat.class);
  4. TextOutputFormat.setOutputPath(job, new Path(args[1]));
复制代码


这里使用`TextInputFormat`和`TextOutputFormat`作为输入和输出的格式类,并使用`setInputPaths()`和`setOutputPath()`方法分别设置输入和输出路径。

2. 如何设置Mapper和Reducer类?

  1. job.setMapperClass(WordCountMapper.class);
  2. job.setReducerClass(WordCountReducer.class);
复制代码


使用`setMapperClass()`和`setReducerClass()`方法分别设置Mapper和Reducer类。

3. 如何设置Mapper和Reducer输出的键值类型?

  1. job.setOutputKeyClass(Text.class);
  2. job.setOutputValueClass(IntWritable.class);
复制代码


使用`setOutputKeyClass()`和`setOutputValueClass()`方法分别设置Mapper和Reducer输出的键值类型。

4. 如何设置Reducer的输出键值对数量?

  1. job.setNumReduceTasks(1);
复制代码


使用`setNumReduceTasks()`方法设置Reducer的输出键值对数量。

5. 如何等待Job完成并打印统计结果?

  1. if (job.waitForCompletion(true)) {
  2.   // 打印统计结果
  3.   Counters counters = job.getCounters();
  4.   Counter counter = counters.findCounter(WordCountReducer.WordCountEnum.COUNT);
  5.   System.out.println("单词总数:" + counter.getValue());
  6. } else {
  7.   System.exit(1);
  8. }
复制代码


使用`waitForCompletion(true)`方法等待Job完成,然后使用`getCounters()`方法获取计数器,再使用`findCounter()`方法获取特定计数器,最后使用`getValue()`方法获取计数器的值,并打印统计结果。

希望以上解答能够对你有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-21 00:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表