在上篇中,有一个错误的地方,就是对于自定义类型,在TextOutputFormat输出格式下输出的时候,会出现不正常的情况。后来查看TextOutputFormat的源码发现,在输出的时候,它会调用自定义类型VectorWritable的toString方法。以前也写过,不知道为什么不正常,这次添加toString方法后,输出文件中显示正常。
TextOutputFormat中调用Object.toString:
private void writeObject(Object o) throws IOException {
if (o instanceof Text) {
Text to = (Text) o;
out.write(to.getBytes(), 0, to.getLength());
} else {
out.write(o.toString().getBytes(utf8));
}
}
public synchronized void write(K key, V value)
throws IOException {
boolean nullKey = key == null || key instanceof NullWritable;
boolean nullValue = value == null || value instanceof NullWritable;
if (nullKey && nullValue) {
return;
}
if (!nullKey) {
writeObject(key);
}
if (!(nullKey || nullValue)) {
out.write(keyValueSeparator);
}
if (!nullValue) {
writeObject(value);
}
out.write(newline);
}
VectorWritable中的toString函数:
public String toString(){
String output = "";
for(int i=0;i<this.values.length;i++){
output = output+String.valueOf(this.values[i])+" ";
}
return output;
}
测试代码同上一篇中的map和reduce函数,不过在job中不设置reduce类,只查看map的输出
分享到:
相关推荐
用户自定义函数 过滤UDF 计算UDF 加载UDF 数据处理操作 加载和存储数据 过滤数据 分组与连接数据 对数据进行排序 组合和分割数据 Pig实战 并行处理 参数代换 第12章 Hive 1.1 安装Hive ...
用户自定义函数 过滤UDF 计算UDF 加载UDF 数据处理操作 加载和存储数据 过滤数据 分组与连接数据 对数据进行排序 组合和分割数据 Pig实战 并行处理 参数代换 第12章 Hive 1.1 安装Hive 1.1.1 Hive外壳环境 1.2 示例 ...
Map和 Reduce的设计思路(含 Map、Reduce阶段的 K、V类型) 基本要求与排序 因为两者代码具有关联性,故放在一起说。 首先在基本要求中,Map 我们对于输入的文件每句进行切割,将单词与文件名作为(text)key,...
(1)统计全球每年的最高气温和最低气温。 (2)MapReduce输出结果包含年份、最高气温、...(4)结合Combiner和自定义数据类型完成全球每年最高气温和最低气温的统计。 (5)应用ToolRunner的使用和Eclipse提交MapReduce任务。
技术点16 使用Thrift3.3.5 Avro技术点17 MapReduce 的下一代数据序列化技术3.4 自定义文件格式3.4.1 输入输出格式技术点18 输入和输出格式为CSV 的文件3.4.2 output committing 的重要性 3.5 本章小...
(1)统计全球每年的最高气温和最低气温。 (2)MapReduce输出结果包含年份、最高气温、...(4)结合Combiner和自定义数据类型完成全球每年最高气温和最低气温的统计。 (5)应用ToolRunner的使用和Eclipse提交MapReduce任务。
此文件夹下主要包含2个java文件,TextPair.java和TextPair2.java,都是自定义的数据类型。 TextPair.java重写了write()和readFields()2个函数 TextPair2.java重写的函数较多 extract_mac 主要包括1个java文件和1个...
3.4 自定义文件格式 3.4.1 输入输出格式 技术点18 输入和输出格式为CSV 的文件 3.4.2 output committing 的重要性 3.5 本章小结 第3 部分 大数据模式 4 处理大数据的MapReduce 模式 4.1 Join ...
Hadoop MapReduce Mapreduce是一个分布式运算程序的编程框架,是用户开发“基于hadoop的数据分析应用”的核心框架。...2.Mapper的输入数据是KV对的形式(KV的类型可自定义) 3.Mapper的输出数据是KV对的形式(K
每个进程都能够定义自己的依赖项并声明自己的输出。 该库提供了许多默认包装器,以帮助以最少的自定义开始。 特征 使用 a 创建作业流。 用于并行执行的多个 Hadoop 集群 (, ) 的资源管理,还允许自定义 Hadoop 集群...
93_job 全排序-自定义分区类2 n% h" `: b4 c) C3 J9 S 94_job二次排序5 t3 Z2 R- ]( a: s* c0 Z 95_从db输入数据进行mr计算: L. M4 I6 y, R2 l/ u/ L 96_输出数据到db中 97_NLineInputFormat& u( k1 T& z( O# P, S* ...