1. 程式人生 > >MapReduce——物件流轉中的深度拷貝技巧

MapReduce——物件流轉中的深度拷貝技巧

       在MapReduce中,map對源資料進行梳理後,以key-value形式向reduce進行資料流轉, 而reduce由於需要根據相同的key、不同的value進行相應的處理,如放入List集合中進行並根據bean某個欄位進行排序等,為防止同一物件一直放入List中導致同一個地址,可用Apache自帶的包org.apache.commons.beanutils.BeanUtils進行深度拷貝。

@Override

protected void reduce(Text key, Iterable<JavaBean> values, Context context) throws IOException, InterruptedException {

    ArrayList<JavaBean> beans = new ArrayList<>();

    for (JavaBean bean: values) {

        JavaBean javaBean= new JavaBean ();

        try {

            //使用Apache提供的工具

            BeanUtils.copyProperties(javaBean,  bean);

        } catch (Exception e) {

            e.printStackTrace();

        }

        beans.add(javaBean);

    }

}