zoukankan      html  css  js  c++  java
  • 自定义MapReduce的类型

    package org.apache.hadoop.mapreduce.io;
    
    import java.io.DataInput;
    import java.io.DataOutput;
    import java.io.IOException;
    
    import org.apache.hadoop.io.WritableComparable;
    
    /***
     * customize writable eg.order
     * 
     * @author nele
     * 
     */
    public class OrderWritable implements WritableComparable<OrderWritable> {
    
        private String orderId;
    
        private float price;
    
        public OrderWritable() {
        }
    
        public OrderWritable(String orderId, float price) {
            set(orderId, price);
        }
    
        public void set(String orderId, float price) {
            this.orderId = orderId;
            this.price = price;
        }
    
        public String getOrderId() {
            return orderId;
        }
    
        public void setOrderId(String orderId) {
            this.orderId = orderId;
        }
    
        public float getPrice() {
            return price;
        }
    
        public void setPrice(float price) {
            this.price = price;
        }
    
        public void write(DataOutput out) throws IOException {
            out.writeUTF(orderId);
            out.writeFloat(price);
        }
    
        public void readFields(DataInput in) throws IOException {
            this.orderId = in.readUTF();
            this.price = in.readFloat();
        }
    
        
        public int compareTo(OrderWritable o) {
            int comp = this.orderId.compareTo(o.orderId);
            if (comp == 0) {
                    return Float.valueOf(this.price).compareTo(Float.valueOf(o.price));
            }
            return comp;
        }
    
        @Override
        public String toString() {
            return   orderId + "	" + price;
        }
        
    
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((orderId == null) ? 0 : orderId.hashCode());
            result = prime * result + Float.floatToIntBits(price);
            return result;
        }
    
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            OrderWritable other = (OrderWritable) obj;
            if (orderId == null) {
                if (other.orderId != null)
                    return false;
            } else if (!orderId.equals(other.orderId))
                return false;
            if (Float.floatToIntBits(price) != Float.floatToIntBits(other.price))
                return false;
            return true;
        }
        
        
        
        
    
    }

    这样就可以,在mapreduce中使用。

    需要根据具体的情境具体的设计。

     
  • 相关阅读:
    IntelliJ IDEA自动补全变量名称和属性名称的快捷键
    Redis客户端 Spring Data Redis(未完)
    用画小狗的方法来解释Java中的值传递
    Java -- Arrays.asList()方法
    有趣的IntegerCache
    字符串使用点滴
    字符串拼接+和concat的区别
    在一个Excel单元格内输入多行内容
    JSTL1.2学习总结
    Android ico
  • 原文地址:https://www.cnblogs.com/nele/p/5177675.html
Copyright © 2011-2022 走看看