【问题标题】:Reading from multiple databases in a single job - hadoop在单个作业中读取多个数据库 - hadoop
【发布时间】:2013-06-26 20:29:46
【问题描述】:

我对 Hadoop 很陌生。我正在尝试编写一个从两个不同数据库(例如 MySQL 和 Postgres)读取数据的 map-reduce 作业。我知道我们可以使用 DBInputFormat 并通过指定 JDBC 驱动程序来读取单个数据库,例如 MySQL:

DBConfiguration.configureDB(conf, “com.mysql.jdbc.Driver”, “jdbc:mysql://localhost/mydatabase”); 

但是,如果我们想从多个数据库中读取,我们该怎么做呢?换句话说,我们如何在 DBConfiguration 中指定多个 JDBC 驱动程序?

【问题讨论】:

  • 非常感谢你们。我知道 Sqoop 和其他将数据导入 HDFS 的技术,但我不想这样做。我宁愿直接从那些 SQL 数据库中读取数据,然后对其进行分析。我不想将任何数据迁移到我的 HDFS 中。有人听说过HIHO吗?你认为在我的情况下使用它是个好主意吗?会不会有效率?

标签: database jdbc hadoop mapreduce


【解决方案1】:

AFAIK,对此没有 OOB 支持。作为替代方案,您可以将 RDBMS 中的数据导出为原始文本文件,然后使用 MultipleInputs 做任何您想做的事情。

我还建议你看看Apache sqoop,以防你还没有完成。

【讨论】:

    【解决方案2】:

    MultipleInputs 的另一种替代方法是运行 2 个仅映射作业,然后运行一个最终作业,以使用这些作业的输出作为输入(使用身份映射器)并在减速器中执行您需要的任何合并逻辑。

    【讨论】:

      猜你喜欢
      • 2013-10-18
      • 2011-01-30
      • 1970-01-01
      • 2023-03-08
      • 2022-01-07
      • 2012-05-31
      • 2017-01-30
      • 1970-01-01
      • 2014-02-20
      相关资源
      最近更新 更多