【发布时间】:2018-07-13 06:18:48
【问题描述】:
我想按需执行 Spark 作业。因此,只有当我收到触发事件时,我才想使用随此触发事件到达的输入来执行 Spark 作业。由于触发事件不频繁,我不想使用 Spark Streaming。 我的目标是在 AWS EMR 集群中部署该工具。我希望能够按需(通过触发器)创建 EMR 集群,在那里执行 Spark 作业并关闭集群。 有没有很好的例子说明如何从 Scala 处理这些操作?
【问题讨论】:
-
这取决于,什么样的事件会触发?你的问题太模糊了,但总的来说,不仅仅是一种语言,要对事件执行操作,你需要某种消息队列。例如,您可以混合使用 AWS CloudWatch(用于事件)和 AWS Data Pipeline(用于 Spark 作业)
-
通过 Amazon 控制台手动设置 EMR。测量集群上线需要多长时间。然后从 AWS CLI 执行相同的操作。您会发现 EMR 设置需要一段时间(超过几分钟)。还要注意启动集群的最低账单费率。与 Lambda、EC2 等相比,EMR 不是按需快速启动和停止类型的服务。不要使用 CloudWatch 启动 EMR。您最终可能会在云中使用大量昂贵的集群。
-
@RobertoCongiu:触发器(事件)将来自 RabbitMQ。我收到它们并在 Scala 中处理它们。但我的问题是如何从 Scala 运行 launch
aws emr命令以创建集群并运行 Spark 作业? -
@JohnHanley:最接近我需要的实现是使用
AmazonElasticMapReduceClient:docs.aws.amazon.com/emr/latest/ReleaseGuide/…
标签: amazon-web-services apache-spark emr amazon-emr