首页 / HADOOP / java.lang.ClassCastException:org.apache.hadoop.io.LongWritable无法强制转换为org.apache.hadoop.hbase.io.Immu
java.lang.ClassCastException:org.apache.hadoop.io.LongWritable无法强制转换为org.apache.hadoop.hbase.io.Immu
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java.lang.ClassCastException:org.apache.hadoop.io.LongWritable无法强制转换为org.apache.hadoop.hbase.io.Immu,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3465字,纯文字阅读大概需要5分钟。
内容图文
我是Hadoop的新手.我使用hadoop 2.3.0和hbase 0.98.3.我正在尝试从文本文件中提取数据并使用MapReduce写入hadoop中的hbase表. Altough我设置了jobKeyClass和outputValueClass’es的工作,我得到classCastException.谁能帮我 ?
这是我的代码.
public static void main(String[] args) {
Configuration config = HBaseConfiguration.create();
Job job;
try {
job = new Job(config, "LogBulkLoader");
job.setJarByClass(Main.class);
job.setMapperClass(LogMapper.class);
job.setOutputFormatClass(TableOutputFormat.class);
job.getConfiguration().set(TableOutputFormat.OUTPUT_TABLE, "fatih");
job.setOutputKeyClass(ImmutableBytesWritable.class);
job.setOutputValueClass(Put.class);
FileInputFormat.addInputPath(job, new Path(userActionsTestFile));
job.setNumReduceTasks(0);
job.waitForCompletion(true);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static class LogMapper extends
TableMapper<ImmutableBytesWritable, Put> {
@Override
protected void setup(Context context) throws IOException,
InterruptedException {
}
@Override
protected void map(ImmutableBytesWritable key, Result value,
Context context) throws IOException, InterruptedException {
try {
String[] l = value.toString().split(",");
String[] t = l[4].split(" ");
String[] date = t[0].split("-");
String[] time = t[1].split(":");
GregorianCalendar gc = new GregorianCalendar(
Integer.parseInt(date[0]), Integer.parseInt(date[1]),
Integer.parseInt(date[2]), Integer.parseInt(time[0]),
Integer.parseInt(time[1]), Integer.parseInt(time[2]));
Put put = new Put(Bytes.toBytes(l[0]));
put.add(Bytes.toBytes("song"), Bytes.toBytes(l[1]),
gc.getTimeInMillis(), Bytes.toBytes(l[6]));
put.add(Bytes.toBytes("album"), Bytes.toBytes(l[1]),
gc.getTimeInMillis(), Bytes.toBytes(l[5]));
put.add(Bytes.toBytes("album"), Bytes.toBytes(l[2]),
gc.getTimeInMillis(), Bytes.toBytes(l[5]));
put.add(Bytes.toBytes("singer"), Bytes.toBytes(l[1]),
gc.getTimeInMillis(), Bytes.toBytes(l[5]));
put.add(Bytes.toBytes("singer"), Bytes.toBytes(l[2]),
gc.getTimeInMillis(), Bytes.toBytes(l[5]));
put.add(Bytes.toBytes("singer"), Bytes.toBytes(l[3]),
gc.getTimeInMillis(), Bytes.toBytes(l[5]));
context.write(new ImmutableBytesWritable(l[0].getBytes()), put);
} catch (Exception e) {
e.printStackTrace();
}
}
}
我得到以下异常.
java.lang.Exception: java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be cast to org.apache.hadoop.hbase.io.ImmutableBytesWritable
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:403)
Caused by: java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be cast to org.apache.hadoop.hbase.io.ImmutableBytesWritable
at com.argedor.module1.Main$LogMapper.map(Main.java:1)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:763)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:339)
at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:235)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
解决方法:
在代码中添加以下内容
job.setMapOutputKeyClass(ImmutableBytesWritable.class)
job.setMapOutputValueClass(Put.class)
到工作配置.
内容总结
以上是互联网集市为您收集整理的java.lang.ClassCastException:org.apache.hadoop.io.LongWritable无法强制转换为org.apache.hadoop.hbase.io.Immu全部内容,希望文章能够帮你解决java.lang.ClassCastException:org.apache.hadoop.io.LongWritable无法强制转换为org.apache.hadoop.hbase.io.Immu所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。