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

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

提前致谢!

最佳答案

对于计划的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之后,我转到Developers Console中的Cloud Scheduler。我创建了一个工作,如下所示:

目标:HTTP
网址:https://dataproc.googleapis.com/v1/projects/example/regions/global/workflowTemplates/terasort-example:instantiate?alt=json
HTTP方法:POST
身体: {}
验证标题:OAuth令牌
服务帐户:[email protected]
范围:(留空)

您可以通过单击Run Now对其进行测试。
请注意,您还可以将主体中的整个工作流程内容复制为JSON有效负载。 URL的最后一部分将变为workflowTemplates:instantiateInline?alt=json

关于google-cloud-platform - 在Google Cloud DataProc上安排cron作业,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58913054/

10-11 08:01