在Google Cloud DataProc上计划cron作业

问题描述 投票:3回答:2

我目前有一个PySpark作业,该作业已部署在DataProc群集上(1个主节点和4个具有足够核心和内存的工作节点)。该作业运行在数百万条记录上,并执行昂贵的计算(多边形中的点)。我能够成功地独自完成这项工作。但是,我希望将作业安排在每个月的7号运行。

我正在寻找的是在DataProc群集上设置cron作业的最有效方法。我尝试阅读Cloud Scheduler,但并未完全说明如何将其与DataProc集群结合使用。看到DataProc上的cron作业示例或DataProc上的某些文档专门与Scheduler一起使用,将非常有帮助。

提前感谢!

google-cloud-platform cron google-cloud-dataproc google-cloud-scheduler
2个回答
2
投票

请参阅其他答案以获取更全面的解决方案

[您要做的是从Cloud Scheduler发布事件以发布主题,然后让Cloud Function对事件进行反应。

以下是使用Cloud Function触发Dataproc的完整示例:How can I run create Dataproc cluster, run job, delete cluster from Cloud Function


0
投票

对于计划的Dataproc交互(创建群集,提交作业,等待作业,删除群集,同时还处理错误),Dataproc的工作流模板API比尝试自己编排这些更好。一个关键优势是工作流程是一劳永逸的,创建的所有集群也将在完成时被删除。

如果您的工作流程模板相对简单,以至于其参数在两次调用之间不会更改,则更简单的计划方法是使用Cloud Scheduler。如果您需要运行工作流以响应GCS中的文件或PubSub中的事件,则Cloud Functions是一个不错的选择。最后,如果您的工作流程参数是动态的,或者混合使用其他GCP产品,则Cloud Composer非常有用。

假设您的用例经常是具有相同参数的简单运行工作流程,我将使用Cloud Scheduler进行演示:

我在我的项目中创建了一个名为terasort-example的工作流程。

然后我在我的项目中创建了一个名为[email protected]的新服务帐户,并赋予了它Dataproc Editor角色;但是,仅用dataproc.workflows.instantiate进行更多限制就足够了。

启用Cloud Scheduler API之后,我转到开发人员控制台中的Cloud Scheduler。我创建了一个工作,如下所示:

目标:HTTP

URL:https://dataproc.googleapis.com/v1/projects/example/regions/global/workflowTemplates/terasort-example:instantiate?alt=json

HTTP方法:POST

正文:{}

Auth Header:OAuth令牌

服务帐户:[email protected]

范围:(左空白)

您可以通过单击Run Now进行测试。

注意,您还可以将主体中的整个工作流内容复制为JSON有效负载。 URL的最后一部分将变为workflowTemplates:instantiateInline?alt=json

© www.soinside.com 2019 - 2024. All rights reserved.