在 Hadoop 中使用 DBOutputFormat
Posted
技术标签:
【中文标题】在 Hadoop 中使用 DBOutputFormat【英文标题】:Using DBOutputFormat in Hadoop 【发布时间】:2012-09-18 06:43:03 【问题描述】:当使用 DBOutputFormat 和 hadoop 时,说最终的结果是转到 mysql 数据库。每次必须写入结果时,Hadoop 会创建单独的连接吗? (DB 是否会被打开的连接过多所累)。我没有使用这种格式,所以任何关于相同的建议都是可以接受的。它会比 Sqoop 有优势吗? Sqoop 也可用于将输出文件导出到数据库。请分享您的观点。
【问题讨论】:
【参考方案1】:这是我从 Cloudera 找到的 this 博客文章的解释:
DBOutputFormat 通过生成一组 每个 reducer 中的 INSERT 语句。然后是 reducer 的 close() 方法 在批量事务中执行它们。执行大量 这些来自几个reduce任务的并发可能会淹没数据库。如果 你想导出大量数据,你可能会更好 将 INSERT 语句生成到文本文件中,然后使用 数据库提供的批量数据导入工具做数据库 导入。
所以看起来每个reducer只会打开一个连接,所以数据库可能不会有太多打开的连接,但它仍然可能导致性能问题。我不确定,但 Sqoop 可能更高效、更健壮。
【讨论】:
Sqoop2 在孵化器中。觉得它很有帮助。以上是关于在 Hadoop 中使用 DBOutputFormat的主要内容,如果未能解决你的问题,请参考以下文章
在 ubuntu 中使用 deb intall 文件安装 hadoop 1.0.1 后如何指定 HADOOP_HOME
是否可以在 Hadoop 1 中使用 Impala(没有 YARN)?