【问题标题】:How do i set an Object as the Value for Map output in Hadoop MapReduce?如何在 Hadoop MapReduce 中将对象设置为 Map 输出的值?
【发布时间】:2012-12-02 08:38:21
【问题描述】:

在 Hadoop MapReduce 中,对于中间输出(由 map() 生成),我希望中间输出的值是以下对象。


MyObject{
  date:Date
  balance:Double
}

我该怎么做。我应该创建自己的可写类吗?

我是 MapReduce 的新手。

谢谢。

【问题讨论】:

    标签: java hadoop mapreduce distributed-computing hdfs


    【解决方案1】:

    您可以编写您可以作为映射器值发出的自定义类型。但是无论你想作为值发出什么,都必须实现可写接口。你可以这样做:

    public class MyObj implements WritableComparable<MyObj>{
    
        private String date;
        private Double balance;
    
        public String getDate() { return date;}
        public Double getBalance() { return balance;}
    
        @Override
        public void readFields(DataInput in) throws IOException {
    
            //Define how you want to read the fields
            }
        @Override
        public void writeFields(DataOutput out) throws IOException {
    
            //Define how you want to write the fields
        }
            .......
            .......
            .......
    
    }
    

    您也可以使用 Avro 序列化框架。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      相关资源
      最近更新 更多