zoukankan      html  css  js  c++  java
  • Writable序列化

    序列化:将内存中的对象 转换成字节序列以便于存储在磁盘上或者用于网络传输。

    反序列化:将磁盘或者从网络中接受到的字节序列,装换成内存中的对象。

    自定义bean对象(普通java对象)要想序列化传输,必须实现序列化接口。

    1)必须实现Writable接口

    2反序列化时,需要反射调用空参构造函数,所以必须有空参构造

    3)重写序列化方法

    4)重写反序列化方法

    5注意反序列化的顺序和序列化的顺序完全一致

    6)要想把结果显示在文件中,需要重写toString(),且” ”分开,方便后续用

    7)如果需要将自定义的bean放在key中传输,则还需要实现comparable接口,因为mapreduce框中的shuffle过程一定会对key进行排序

    package com.mapreduce.flow;
    
    import java.io.DataInput;
    import java.io.DataOutput;
    import java.io.IOException;
    
    import org.apache.hadoop.io.Writable;
    
    /*
     * 实现writable 接口
     * 目的: 能够序列化和反序列化 用户自定义的bean对象( 用hadoop 的序列化机制 )
     * 
     */
    public class FlowBean implements Writable {
    
        
        private long upFlow;
        private long downFlow;
        private long sumFlow;
        
        public FlowBean(){
            super();
        }
        
        /*
         * 序列化对象
         *
         */
        public void write(DataOutput out) throws IOException {
            out.writeLong(this.upFlow);
            out.writeLong(this.downFlow);
            out.writeLong(this.sumFlow);
        }
        /*
         *  反序列化对象
         *  
         */
        public void readFields(DataInput in) throws IOException {
            
            upFlow = in.readLong();
            downFlow = in.readLong();
            sumFlow = in.readLong();
        }
    
        
        public String toString() {
            return  upFlow + "	" + downFlow + "	" + sumFlow;
        }
      
      

       //7 如果需要将自定义的bean放在key中传输,则还需要实现comparable接口,因为mapreduce框中的shuffle过程一定会对key进行排序

        @Override

        public int compareTo(FlowBean o) {

          // 倒序排列,从大到小

          return this.sumFlow > o.getSumFlow() ? -1 : 1;

        }

    }


    }
  • 相关阅读:
    JS 关于 URL 的编码或解码方法
    PHP 获取上一个页面的url
    踩坑 Uncaught RangeError: Maximum call stack size exceeded
    Wordpress 数据库查询错误 Call to a member function get_results() on null
    Chrome autocomplete="off"无效
    js 遍历对象属性(for in、Object.keys、Object.getOwnProperty) 以及高效地输出 js 数组
    PHP PDO fetch() 详解
    Wordpress 自定义文章类型添加 Categoried、Tags
    Mac: mac git 的安装 及实现自动补全
    Uncaught TypeError: Cannot read property of undefined In JavaScript
  • 原文地址:https://www.cnblogs.com/lijins/p/10079377.html
Copyright © 2011-2022 走看看