【问题标题】:Exporting Amazon S3 Data using EMR into local database使用 EMR 将 Amazon S3 数据导出到本地数据库
【发布时间】:2013-11-26 07:12:11
【问题描述】:

有没有人使用 EMR 将 S3 数据从 Amazon AWS 导出到本地数据库?我想编写一个自定义 M/R 解决方案,它将提取某些数据并并行加载到本地网络数据库实例中。我在亚马逊网站上没有看到任何说明这可能与否的信息。很多提到在 AWS 实例中移动数据。

【问题讨论】:

    标签: amazon-web-services amazon-s3 emr


    【解决方案1】:

    当您说“本地网络数据库”时,您指的是 EC2 实例上的数据库还是本地网络上的数据库?

    任何一种方式都是可能的 - 如果您使用的是非 EC2 或非 AWS 数据库,只需确保打开您的安全组/防火墙以建立必要的网络连接。

    关于将数据从 S3 加载到本地数据库:

    1. 您可以使用 EMR 从 S3 处理数据,并使用映射器将其转换为 CSV 格式,然后将其批量导入您的数据库。这可能是最快的 - 因为从 CSV 批量导入将允许数据库非常快速地导入数据。
    2. 您可以使用 EMR 映射器将数据直接插入数据库 - 但我不推荐这种方法。由于多个映射器直接写入数据库,您很容易使数据库过载并导致停顿和进程失败。

    【讨论】:

    • 谢谢苏曼,是的,我指的是本地网络数据库。我打算直接从 reducer 插入,这样我可以控制并行度,确保不会压倒数据库。
    • 好的,那绝对可以。为什么使用reducer - 如果您不需要聚合原始数据,那么您可以直接在映射器中进行。当然,如果你需要使用reducer这一步,那么一定要在reducer里面做。
    • 顺便说一句,我已经完成了 #1 和 #2 :) 所以这就是我知道它有效的原因。
    • reducer 允许我指定我将拥有多少个到 RDMBS 的连接。如果我使用 100 个 reducer 运行并关闭了推测执行,那么将只建立 100 个与 RDBMS 的连接。可能可以使用自定义 InputFormat 执行此操作并在映射器中执行此操作,但我必须实现自定义 InputFormat 并使用 S3 输入拆分(基本上将多个拆分传递给阅读器)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 2017-01-12
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 2019-12-24
    相关资源
    最近更新 更多