Hadoop on Mac with IntelliJ IDEA - 6 解决KeyValueTextInputFormat读取时只有key值问题

本文讲述使用KeyValueTextInputFormat在Hadoop 0.x正常工作、Hadoop 1.2.1失效的解决过程。

环境:Mac OS X 10.9.5, IntelliJ IDEA 13.1.4, Hadoop 1.2.1

Hadoop放在虚拟机中,宿主机通过SSH连接,IDE和数据文件在宿主机。IDEA自身运行于JDK 1.8,IDEA工程及Hadoop使用JDK 1.6。

还在折腾Hadoop In Action第4章的代码,书的写法,如下所示。

job.setInputFormat(KeyValueTextInputFormat.class);
job.set("key.value.separator.in.input.line", ",");

在hadoop 1.2.1上运行正常。但是,我强迫症又发作了,想把代码改成符合hadoop 1.2.1的范式,如下所示。

configuration.set("key.value.separator.in.input.line", ",");
Job job = new Job(configuration, "Patent Job");
job.setInputFormatClass(KeyValueTextInputFormat.class);

运行时,从日志上看,数据没按预期切割,而是合并了,如下图所示。

数据源如下图所示

按如下方式修改[1],则结果正常。

// 原语句
configuration.set("key.value.separator.in.input.line", ",");
// 改成
configuration.set("mapreduce.input.keyvaluelinerecordreader.key.value.separator",",");

参考文献

[1]http://stackoverflow.com/questions/12540145/hadoop-use-keyvaluetextinputformat

时间: 2024-10-10 00:26:26

Hadoop on Mac with IntelliJ IDEA - 6 解决KeyValueTextInputFormat读取时只有key值问题的相关文章

Hadoop on Mac with IntelliJ IDEA - 7 解决failed to report status for 600 seconds. Killing!问题

本文讲述作业在Hadoop 1.2.1完成map后ruduce阶段遇到failed to report status for 600 seconds. Killing!问题的解决过程. 环境:Mac OS X 10.9.5, IntelliJ IDEA 13.1.4, Hadoop 1.2.1 Hadoop放在虚拟机中,宿主机通过SSH连接,IDE和数据文件在宿主机.IDEA自身运行于JDK 1.8,IDEA工程及Hadoop使用JDK 1.6. 提交作业到hadoop后,作业执行时间过长,输出

Hadoop on Mac with IntelliJ IDEA: 1 解决输入路径不存在问题

本文讲述使用IntelliJ IDEA时遇到Hadoop提示input path does not exist(输入路径不存在)的一种解决办法. 环境:Mac OS X 10.9.5, IntelliJ IDEA 13.1.4, Hadoop 1.2.1 Hadoop放在虚拟机中,宿主机通过SSH连接,IDE和数据文件在宿主机. 这是自学Hadoop的第三天.以前做过点.NET开发,Mac.IntelliJ IDEA.Hadoop.CentOS对我而言,相当陌生.第一份Hadoop代码就遇到了问

Hadoop on Mac with IntelliJ IDEA - 5 解决java heap space问题

本文讲述在CentOS 6.5中提交作业到hadoop 1.2.1于reduce阶段遇到Error: java heap space错误导致作业重新计算的解决过程.解决办法适用Linux.Mac OS X 和Windows操作系统. 环境:Mac OS X 10.9.5, IntelliJ IDEA 13.1.4, Hadoop 1.2.1 Hadoop放在虚拟机中,宿主机通过SSH连接,IDE和数据文件在宿主机.IDEA自身运行于JDK 1.8,IDEA工程及Hadoop使用JDK 1.6.

Hadoop on Mac with IntelliJ IDEA - 2 解决URI错误导致Permission denied

本文讲述在IntelliJ IDEA中使用FileSystem.copyFromLocalFile操作Hadoop时因URI格式有误导致Permission denied的解决过程. 环境:Mac OS X 10.9.5, IntelliJ IDEA 13.1.4, Hadoop 1.2.1 Hadoop放在虚拟机中,宿主机通过SSH连接,IDE和数据文件在宿主机. 操作代码如下 1 public class CopyFromLocalTestDriver { 2 public static v

Hadoop on Mac with IntelliJ IDEA - 9 解决Type mismatch in value from map问题

修改陆喜恒. Hadoop实战(第2版)5.3排序的代码时遇到IO异常. 环境:Mac OS X 10.9.5, IntelliJ IDEA 13.1.5, Hadoop 1.2.1 异常具体信息如下 1 14/10/06 03:08:51 INFO mapred.JobClient: Task Id : attempt_201410021756_0043_m_000000_0, Status : FAILED 2 java.io.IOException: Type mismatch in va

Hadoop on Mac with IntelliJ IDEA - 4 制作jar包

本文讲述使用IntelliJ IDEA打包Project的过程,即,打jar包. 环境:Mac OS X 10.9.5, IntelliJ IDEA 13.1.4, Hadoop 1.2.1 Hadoop放在虚拟机中,宿主机通过SSH连接,IDE和数据文件在宿主机.IDEA自身运行于JDK 1.8,IDEA工程及Hadoop使用JDK 1.6. 在本系列博文的第一篇,我因不会使用IDEA打jar包,不得不直接调试代码,遇到输入路径不存在问题.今天,我打了几次jar包,结果不都满意,默认情况,ID

Hadoop on Mac with IntelliJ IDEA - 8 单表关联NullPointerException

简化陆喜恒. Hadoop实战(第2版)5.4单表关联的代码时遇到空指向异常,经分析是逻辑问题,在此做个记录. 环境:Mac OS X 10.9.5, IntelliJ IDEA 13.1.5, Hadoop 1.2.1 改好的代码如下,在reduce阶段遇到了NullPointerException. 1 public class STjoinEx { 2 private static final String TIMES = "TIMES"; 3 4 public static v

Hadoop on Mac with IntelliJ IDEA - 11 Hadoop版本衍化

最近阅读的材料总是提到Hadoop 0.20.0.23等版本号,导致个人对Hadoop版本感到相当讶异:1.2.1竟然比0.23还落后,你特么在逗我.好奇之下,搜索一把,找到了一个文档,以下内容均来自该文档,在此作个备份. 摘自迪伦. Hadoop大数据解决方案进阶应用 - Hadoop 2.0(1). 1.第一代Hadoop:Hadoop 1.0 包含三个大版本,分别是0.20.x.0.21.x.0.22.x和CDH3 0.20.x最后演化成1.0.x,变成了稳定版 0.21.x和0.22.x

Hadoop on Mac with IntelliJ IDEA - 10 陆喜恒. Hadoop实战(第2版)6.4.1(Shuffle和排序)Map端 内容整理

下午对着源码看陆喜恒. Hadoop实战(第2版)6.4.1  (Shuffle和排序)Map端,发现与Hadoop 1.2.1的源码有些出入.下面作个简单的记录,方便起见,引用自书本的语句都用斜体表示. 依书本,从MapTask.java开始.这个类有多个内部类: 从书的描述可知,collect()并不在MapTask类,而在MapOutputBuffer类,其函数功能是 1.定义输出内存缓冲区为环形结构2.定义输出内存缓冲区内容到磁盘的操作 在collect函数中将缓冲区的内容写出时会调用s