返回信息流新手写hadoop程序,出错为:
java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be cast to org.apache.hadoop.io.Text
at count_handover$CountMapper.map(count_handover.java:1)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1136)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
以下是程序中的maper类,请帮忙看看是哪里错了呢
public static class CountMapper extends Mapper<IntWritable, Text, Text, IntWritable>
{
private int count_all=0;
private int count_result=0;
private Context context_tmp=null;
public void map(Object key, Text value, Context context)throws IOException, InterruptedException
{
if(context_tmp==null)//这里错了么?
context_tmp=context;
count_all++;
String[] token=value.toString().split(",");
if(token[56]=="0")
count_result++;
}
void close() throws IOException, InterruptedException
{
context_tmp.write(new Text("count_all"), new IntWritable(count_all));
context_tmp.write(new Text("count_result"), new IntWritable(count_result));
}
}
这是一条镜像帖。来源:北邮人论坛 / java / #28275同步于 2014/1/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
hadoop的.LongWritable cannot be cast to org.apache.hadoop.i
AHEGONGZHU
2014/1/2镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
这是哪个版本啊?map函数里面第一个参数可以是Object?
【 在 AHEGONGZHU (开心公主) 的大作中提到: 】
: 新手写hadoop程序,出错为:
: java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be cast to org.apache.hadoop.io.Text
: at count_handover$CountMapper.map(count_handover.java:1)
: ...................
【 在 AHEGONGZHU 的大作中提到: 】
: 新手写hadoop程序,出错为:
: java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be cast to org.apache.hadoop.io.Text
: at count_handover$CountMapper.map(count_handover.java:1)
: ...................
请把你的main函数里的job set贴出来。肯定是这里设置错误。
按你的提示,问题解决了一部分,谢谢啦
【 在 zwan0518 的大作中提到: 】
: 猜测是应该map的输入的是long,但是你的mapper类的定义是指明了Text,导致转换类型失败
你说的对,的确有一部分错误是这里的,3QU
【 在 Hemingway 的大作中提到: 】
: 请把你的main函数里的job set贴出来。肯定是这里设置错误。
写的几个水贴:http://blog.csdn.net/zwan0518/article/category/1380315
【 在 AHEGONGZHU 的大作中提到: 】
: 按你的提示,问题解决了一部分,谢谢啦
赞啊!!不错啊,少年
【 在 zwan0518 的大作中提到: 】
: 写的几个水贴:http://blog.csdn.net/zwan0518/article/category/1380315