hadoop第二讲NewMaxTemperature

本文档详细介绍了在执行Hadoop的NewMaxTemperature示例时遇到的两个常见问题及其解决方案:1) 类声明错误,需将源代码放在对应的.java文件中;2) 编译时出现软件包不存在的错误,通过指定-classpath解决;3) 使用Hadoop上传数据时,直接写入文件名而非新建文件夹会导致FileAlreadyExistsException,确保输出目录在运行前不存在。
摘要由CSDN通过智能技术生成
1 在看书时没有找到sample.txt 测试使用的数据,而且书上给的数据中间有省略的数据,在看程序的截断数据部分时需要查看全部的数据,所以查找到了完整的数据如下:
0067011990999991950051507004+68750+023550FM-12+038299999V0203301N00671220001CN9999999N9+00001+99999999999
0043011990999991950051512004+68750+023550FM-12+038299999V0203201N00671220001CN9999999N9+00221+99999999999
0043011990999991950051518004+68750+023550FM-12+038299999V0203201N00261220001CN9999999N9-00111+99999999999
0043012650999991949032412004+62300+010750FM-12+048599999V0202701N00461220001CN0500001N9+01111+99999999999
0043012650999991949032418004+62300+010750FM-12+048599999V0202701N00461220001CN0500001N9+00781+9999999999
在和书上截断的数据部分的比较时发现自己在数字符的位置时应该从0开始计数而不是从1开始。
2类Interger用法
http://www.cjsdn.net/Doc/JDK50../java/lang/Integer.html
代码中使用的parseInt将字符串参数作为有符号的十进制整数进行分析;
MIN_VALUE为保持 int 类型的最小值的常量可取的值为 -231
3错误列表
3.1

/home/amy/hadoop/NewMaxTemperature .java:11: 类 NewMaxTemperature 是公共的,应在名为 NewMaxTemperature.java 的文件中声明

解决方案:

1:一个.java文件中只能有一个公共类,不能有两个以上公共类。
2:文件名需要与Pubilc类名同名


3.2

javac -d /home/hadoop/New/ /home/amy/hadoop/NewMaxTemperature.java ,编译生成class文件时
提示错误:home/amy/hadoop/NewMaxTemperature.java:3: 软件包    org.apache.hadoop.fs 不存在 import org.apache.hadoop.fs.Path;  
                           ^ 
/home/amy/hadoop/NewMaxTemperature.java:4: 软件包 org.apache.hadoop.io 不存在 
import org.apache.hadoop.io.*;  /home/amy/hadoop/NewMaxTemperature.java:5: 软件包 org.apache.hadoop.mapreduce 不存在 



 解决方案:
错误中提示那些类的依赖包都不存在。发现是没有将classpath属性添加进去。

javac -classpath /home/hadoop/hadoop-0.20.2/hadoop-0.20.2-core.jar -d /home/hadoop/New/ /home/amy/hadoop/NewMaxTemperature.java 


3.3
 jar -cvf new.jar -C ./New/ 
解决方案:
1:将两个类文件归档到一个名为 classes.jar 的归档文件中: 
       jar cvf classes.jar Foo.class Bar.class 
 2:将 foo/ 目录中的所有文件归档到 "classes.jar" 中: 
       jar cvfm classes.jar  -C foo/ . 
发现自己在New后面应该添加.表示添加所以的文件

3.4

在图片中可以看出我们在上传文件时,虽然开始时新建了一个文件夹newax打算存放数据,但是当在上传文件时我们直接写了input文件,结果运行发现虽然最开始没有这个文件但是在写了以后可以不用新建就可以使用了。但是不要高兴的太早啊,我们使用fs -ls观察发现区别是存在的。如下图:


 
我们看到了不同,那么我们继续操作看看会不会影响最后的结果

我们采用newax文件作为输入数据运行时发现没有错误,我们使用input文件作为输入时


 


3.5
刚开始打算创建一个maxout文件保存输出的结果,可是提示错误:

Exception in thread "main" org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory maxout already exists 

 解决方案:
/home/hadoop# ./hadoop-0.20.2/bin/hadoop jar ./New/new.jar NewMaxTemperature newax maxou 

其中maxou在运行前是不存在的文件。


 正确运行结果。

4运行结果


 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值