Dataproc工作流模板实例化报错:MergeFrom参数类型不匹配
解决Dataproc Workflow Template实例化时的TypeError问题
问题原因
你遇到的TypeError: Parameter to MergeFrom() must be instance of same class: expected google.cloud.dataproc.v1.WorkflowTemplate got str,是因为代码里把字典类型的workflow_json通过'{0}'.format(workflow_json)转换成了字符串,而instantiate_inline_workflow_template方法的template参数要求传入**google.cloud.dataproc.v1.WorkflowTemplate对象或者对应的Python字典**,不是字符串类型。
修复代码
直接传入原始的workflow_json字典即可,不需要做字符串格式化:
# create workflow client workflow_client = dataproc.WorkflowTemplateServiceClient() parent = 'projects/{0}/regions/{1}'.format(project_id, region) # submit request operation = workflow_client.instantiate_inline_workflow_template( request={'parent': parent, 'template': workflow_json} )
额外验证点
- 确保
workflow_json确实是通过json.loads()(从JSON字符串解析)或者直接构造的Python字典,而非原始的JSON字符串。如果是从Cloud Storage读取的JSON文件内容,需要先解析成字典:import json # 假设从GCS读取的是json_str字符串 workflow_json = json.loads(json_str) - 确认
workflow_json的结构完全符合WorkflowTemplate的定义,字段和嵌套结构要匹配Dataproc API的要求。
内容的提问来源于stack exchange,提问作者Cam
相关产品推荐
相关产品推荐

