分享

reduce里面适合对数据进行写入oracle吗?

szcountryboy 发表于 2015-8-28 23:36:21 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 15394
map对数据进行归集去重,
reduce接受到数据后,
public void reduce(Text key, Iterable<LongWritable> values, Context context)
        throws IOException, InterruptedException {
      ......
      调用写入数据库方法
      context.write(key, val);
    }


还是等job完成后适合数据写入数据库
   boolean result = job.waitForCompletion(true);

    // read output and calculate standard deviation
    stddev = readAndCalcStdDev(outputpath, conf)


各有什么好处?


如果在reduce里面进行数据写入,好像是串行的,(setup方法输出提示信息),并不是分布式并行,是什么原因?

已有(4)人评论

跳转到指定楼层
starrycheng 发表于 2015-8-29 09:22:55
最好job完成后,reduce中有并发现象,这个需要锁,非常麻烦的。
回复

使用道具 举报

szcountryboy 发表于 2015-8-29 10:13:58
非常感谢楼上的回答
通过在eclipse时里面mr调试发现,reduce并没有并行去工作(三个节点),在reduce里面打印输出(system.out)像是一个节点一个节点在执行   clean(释放对象)也会执行三次,

是eclipse问题还是reduce本身问题?

个人感觉:串行也有道理。三个节点 , 比如n个文件切三片,每节点一map,对应一片,三个map完成后输出到reduce,reduce开始工作,如果reduce也并行,有可能片一里面的数据,也会存在片二、片三里面,所以reduce串行就能完成key的数据去重,是这个意思吗?
回复

使用道具 举报

tntzbzc 发表于 2015-8-30 00:08:38
szcountryboy 发表于 2015-8-29 10:13
非常感谢楼上的回答
通过在eclipse时里面mr调试发现,reduce并没有并行去工作(三个节点),在reduce里面 ...

想复杂了,凡是执行reduce的都会执行插入。
回复

使用道具 举报

aqi915 发表于 2016-2-2 08:55:36
你好,目前正需要MR调用HDFS数据到oracle,你有脚本分享下么,在此非常感谢了,之前自己写的都有点问题,网google下搜到你的文章非常兴奋耶!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条