调用Dataproc Workflow遇ValueError:OrderedJob无template字段求助
我正在编写Google Cloud Function,用于调用存储在云存储中YAML文件定义的Dataproc Workflow。测试调用时函数立即崩溃,抛出如下堆栈跟踪:
Traceback (most recent call last):
File "/layers/google.python.pip/pip/lib/python3.10/site-packages/proto/message.py", line 570, in init
pb_value = marshal.to_proto(pb_type, value)
File "/layers/google.python.pip/pip/lib/python3.10/site-packages/proto/marshal/marshal.py", line 217, in to_proto
pb_value = rule.to_proto(value)
File "/layers/google.python.pip/pip/lib/python3.10/site-packages/proto/marshal/rules/message.py", line 36, in to_proto
return self._descriptor(**value)
ValueError: Protocol message OrderedJob has no "template" field.
查阅OrderedJob文档后发现,该结构体并无名为'template'的字段(无论必填或可选)。谷歌搜索该错误无结果,由于我是首次使用工作流,不知从何入手,恳请提供解决建议。
- 检查云存储中的YAML工作流定义文件,确认是否在
OrderedJob节点下误用了template字段。Dataproc Workflow的OrderedJob支持的字段是如hadoop_job、spark_job、pig_job这类具体任务类型,或者step_id、prerequisite_step_ids等控制字段,不存在template字段。 - 检查Cloud Function代码中构建
OrderedJob对象的逻辑,是否在代码里手动添加了template键值对到参数中,导致构造Proto消息时触发错误。 - 确认使用的Dataproc客户端库版本是否与当前Dataproc API兼容。部分旧版本库可能存在字段映射问题,尝试升级到最新稳定版的
google-cloud-dataproc库。 - 如果是通过YAML导入工作流模板,确认是否混淆了工作流模板(Workflow Template) 和OrderedJob的语法。工作流模板本身可以有模板引用,但单个OrderedJob不能直接用
template字段。
内容的提问来源于stack exchange,提问作者Cam

