1

当使用带有hadoop的DBOutputFormat时,说最终的结果是去MySql数据库。每次必须写入结果时,Hadoop 会创建单独的连接吗?(DB 是否会承受太多打开的连接)。我没有使用这种格式,所以任何关于相同的建议都是可以接受的。它会比Sqoop有优势吗?Sqoop 也可用于将输出文件导出到数据库。请分享您的观点。

4

1 回答 1

4

这是我从 Cloudera找到这篇博文的解释:

DBOutputFormat 通过在每个 reducer 中生成一组 INSERT 语句来写入数据库。reducer 的 close() 方法然后在批量事务中执行它们。同时从几个reduce任务中执行大量这些可能会淹没数据库。如果要导出大量数据,最好将 INSERT 语句生成文本文件,然后使用数据库提供的批量数据导入工具进行数据库导入。

所以看起来每个reducer只会打开一个连接,所以数据库可能不会有太多打开的连接,但它仍然可能导致性能问题。我不确定,但 Sqoop 可能稍微更有效和更健壮。

于 2012-09-18T23:10:32.583 回答