千家信息网

Hadoop中如何自定义

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下Hadoop中如何自定义,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!自定义计数器计数器用来监控,had
千家信息网最后更新 2026年11月02日Hadoop中如何自定义

小编给大家分享一下Hadoop中如何自定义,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

  1. 自定义计数器

    计数器用来监控,hadoop中job的运行进度和状态。

    如源文件内容为:

    a b

    c d e f

    g h i

    现在需要找出字段数大于3和小于3的记录条数,可以使用计数器来实现,代码如下:

public void map(LongWritable key, Text value,

OutputCollector output, Reporter reporter)

throws IOException {

String[] split = value.toString().split("\t");

if(split.length>3){

org.apache.hadoop.mapred.Counters.Counter counter = reporter.getCounter("MyCounter", "isLong");

counter.increment(1);

}else if(split.length<3){

org.apache.hadoop.mapred.Counters.Counter counter = reporter.getCounter("MyCounter","isShort");

counter.increment(1);

}

2. hadoop中的自定义数据类型

hadoop中默认的数据类型有:

  • BooleanWritable:标准布尔型数值

  • ByteWritable:单字节数值

  • DoubleWritable:双字节数值

  • FloatWritable:浮点数

  • IntWritable:整型数

  • LongWritable:长整型数

  • Text:使用UTF8格式存储的文本

  • NullWritable:当中的key或value为空时使用

自定义数据类型的实现:

1.实现Writable接口,并重写内部write()和readFields()方法,从而完成序列化之后的网络传输和文件输入或输出。

2.如果该数据类型被作为mapreduce中的key,则该key需要为可比较的,需要实现WriableComparable接口,并重写内部write()和readFields()、compare()方法。


代码如下:

代码一:

public class Person implements Writable{

long id;

String name;

long age;

@Override

public void readFields(DataInput in) throws IOException {

this.id = in.readLong();

this.name = in.readUTF();

this.age = in.readLong();

}

@Override

public void write(DataOutput out) throws IOException {

out.writeLong(id);

out.writeUTF(name);

out.writeLong(age);

}

@Override

public String toString() {

return "id:"+id+" name:"+name+" age:"+age;

}

public long getId() {

return id;

}

public String getName() {

return name;

}

public long getAge() {

return age;

}

}

代码二:基于key的比较

package cn.com.bonc.hadoop;

import java.io.DataInput;

import java.io.DataOutput;

import java.io.IOException;

import org.apache.hadoop.io.WritableComparable;

public class PersonSortByAge implements WritableComparable{

long id;

String name;

long age;

@Override

public void readFields(DataInput in) throws IOException {

in.readLong();

in.readUTF();

in.readLong();

}

@Override

public void write(DataOutput out) throws IOException {

out.writeLong(id);

out.writeUTF(name);

out.writeLong(age);

}

@Override

public int compareTo(PersonSortByAge o) {

return (int) (this.id - o.id);

}

@Override

public String toString() {

return "id:"+id+" name:"+name+" age:"+age;

}

}

以上是"Hadoop中如何自定义"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

代码 数据 类型 内容 数值 篇文章 计数器 字节 接口 方法 不怎么 大部分 字段 布尔 序列 文件 文本 更多 标准 格式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司 有格互联网科技 互联网科技有限公司图片 互联网科技论坛 新华互联网科技2019 常德市电业局互联网科技部 互联网媒体平台算高科技产业 互联网科技大奖都有哪些公司 科技互联网的核心竞争力 2021互联网科技公司排名 互联网金融科技元年 黑科技 体验场景 互联网大会 雨阳互联网卡科技有限公司 互联网科技融合创新 2021世界互联网领先科技成果发布 广西科技产业互联网是什么 北京天晋互联网科技有限公司 第三届互联网大会安防黑科技 优雇互联网科技有限公司 六子台科技互联网展会 港股互联网科技股 卓越科技(互联网 ) 丰台科技园 互联网 恒银科技与互联网金融 华服互联网科技官网 来此购互联网科技有限公司 2021互联网科技公司排名 深圳互联网科技的发展 广州百诚互联网科技有限公司官网 信承诺互联网科技有限公司
0