MapReduce——物件流轉中的深度拷貝技巧
阿新 • • 發佈:2018-12-10
在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);
}
}