【问题标题】:How to fetch data from EMR Spark session?如何从 EMR Spark 会话中获取数据?
【发布时间】:2019-11-18 18:01:45
【问题描述】:

我正在使用 Airflow 设计一些 ETL 数据管道。数据转换是通过预置 AWS EMR Spark 集群并发送它的一些作业来完成的。作业从 S3 读取数据,对其进行处理,然后使用日期作为分区将它们写回 S3。

对于我的最后一步,我需要使用 SQL 脚本将 S3 数据加载到数据仓库,这些脚本使用 Python 脚本提交给 Redshift,但是我找不到一种干净的方法来检索需要加载的数据,即。在 Spark 转换期间生成了哪些日期分区(只能在作业执行期间知道,而不是事先知道)。

请注意,所有内容都是通过 Python 脚本使用 boto3 库进行编排的,该库从无法从外部访问的公司 VM 中运行。

从 EMR 获取此信息的最佳方式是什么?

现在我正在考虑不同的解决方案: - 将信息写入日志文件。通过 Python 脚本使用 SSH 从 Spark 主节点获取数据 - 将信息写入 S3 文件 - 将信息写入数据库(RDS?)

我正在努力确定这些解决方案的优缺点。我还想知道什么是通知数据转换已经结束并且可以获取元数据的最佳方式。

提前致谢

【问题讨论】:

    标签: amazon-web-services apache-spark metadata airflow amazon-emr


    【解决方案1】:

    最直接的方法是使用 S3 作为您的临时存储。完成 Spark 执行(将结果写入 S3)后,您可以再添加一个步骤,将数据写入您想要在下一步中获取的 S3 存储桶。

    使用 RDS 的方法应该类似于 S3,但它需要比 S3 更多的实现。您需要设置 RDS、维护 Schema、实现以使用 RDS...

    使用 S3 tmp 文件,在 EMR 终止并 AF 运行下一步后,使用 Boto 获取该 tmp 文件(S3 路径取决于您的要求),就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多