【问题标题】:Amazon EMR vs Amazon RedshiftAmazon EMR 与 Amazon Redshift
【发布时间】:2019-07-24 02:56:40
【问题描述】:

对于大多数用例,可以使用 Amazon EMR 对流数据或有界数据(例如来自 Amazon S3)进行 Spark 转换,然后可以使用转换后的数据再次将数据写入 S3。

还可以在 Amazon Redshift 中使用将 S3 中的不同数据加载到不同的 Redshift 表,然后将不同 Redshift 表中的数据加载到最终表中来实现转换。 (现在有了 Redshift 光谱,我们也可以直接从 S3 中选择和转换数据。)

话虽如此,我发现转换可以在 EMR 和 Redshift 中完成,Redshift 加载和转换可以用更少的开发时间完成。

那么,EMR 是否应该用于主要涉及流式/无限数据的用例?什么其他用例更适合 EMR(我知道 Spark 也提供其他核心、sql、ml 库),但只是为了实现转换(涉及连接/减速器),我没有看到除此之外的用例在 EMR 中进行流式传输,此时在 Redshift 中也可以实现转换。

请提供使用 EMR 转换与 Redshift 转换的用例。

【问题讨论】:

    标签: amazon-web-services amazon-redshift amazon-emr amazon-redshift-spectrum


    【解决方案1】:

    首先,我更喜欢使用 Redshift 进行转换:

    • 开发更简单,SQL 而非 Spark
    • 维护/监控更容易
    • 假设您可以在“非高峰期”运行,基础设施成本会更低 次。

    有时 EMR 是更好的选择,我会在以下情况下考虑:

    • 当您希望在 S3 上同时拥有原始数据和转换后的数据时,例如一种 “数据湖”战略
    • 需要复杂的转换。有些转变只是 无法使用 Redshift,例如当
      • 管理复杂的大型 json 列
      • 动态转换数据(属性数量可变)
      • 需要第三方库
    • 数据量太大,需要更大的红移集群来处理转换。

    除了 Redshift 和 EMR 之外,还有其他其他选项,这些也应予以考虑。 例如

    • 标准 python 或其他脚本语言:
      • 创建动态转换sql,可以在redshift中运行
      • 从 csv 到 parquet 或类似的处理
      • 调度(例如气流)
    • AWS 雅典娜
      • 可与 s3(例如 parquet)输入和输出一起使用
      • 使用 Presto 语法使用 SQL(因此在开发时间上有一些优势),在某些情况下它比 Redshift SQL 更强大
      • 可以带来显着的成本效益,因为不需要永久性基础设施成本,按使用付费。

    还应考虑 AWS Batch 和 AWS lambda。

    【讨论】:

    • 非常感谢。金尘答。这里有几个问题。 a) 是否可以使用 RedShift Spectrum 写入外部表(在 S3 中)? b) 可以使用 AWS 管道或任何其他工具安排 Athena 查询吗?我曾在 Google BigQuery 工作过,了解 BigQuery 让生活变得更轻松,其优势在于可以在一个地方处理上述大部分简单/复杂转换,并以与存储桶/存储价格相等的价格本地存储复杂数据。
    • BigQuery 与 Athena 类似,我推荐使用 Airflow 之类的第三方调度解决方案,但是有一些方法可以使用 cloudwatch/lambda 以及其他方法来安排简单的运行。红移光谱不能直接写入 s3,但可以创建一个红移表,然后您可以使用复制命令将其导出。
    • 再次感谢
    猜你喜欢
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多