Google cloud dataflow 如何处理;模板参数无效";使用云数据流REST API/Python启动自定义模板时

Google cloud dataflow 如何处理;模板参数无效";使用云数据流REST API/Python启动自定义模板时,google-cloud-dataflow,Google Cloud Dataflow,我一直在使用Dataprep构建数据流模板 从运行它-没有问题。它会提示输入参数(区域端点、输入位置、输出位置、临时文件的自定义位置),元数据文件基本上会告诉我答案 当我开始使用RESTAPI从Python运行自定义模板时,我包括了如下参数(大量引号转义) 我得到的错误是“模板参数无效”,但没有更多细节;我不确定我是否遗漏了一些东西,包括我不应该遗漏的东西,或者错误地逃避了一些东西(其他问题,如,似乎表明后者并不罕见)。谢谢你的建议,我在过去的6-7个小时里也遇到了同样的问题,最后终于让它起作用

我一直在使用Dataprep构建数据流模板

从运行它-没有问题。它会提示输入参数(区域端点、输入位置、输出位置、临时文件的自定义位置),元数据文件基本上会告诉我答案

当我开始使用RESTAPI从Python运行自定义模板时,我包括了如下参数(大量引号转义)


我得到的错误是“模板参数无效”,但没有更多细节;我不确定我是否遗漏了一些东西,包括我不应该遗漏的东西,或者错误地逃避了一些东西(其他问题,如,似乎表明后者并不罕见)。谢谢你的建议,我在过去的6-7个小时里也遇到了同样的问题,最后终于让它起作用了。似乎导致此问题的参数是“tempLocation”。另外,看起来在输入和输出位置参数中还有一组{}。请尝试以下操作:

BODY = {
    "jobName": "{jobname}".format(jobname=JOBNAME),
    "parameters": {
        "customGcsTempLocation": "gs://{bucket}/dts/temp".format(bucket=BUCKET),
        "inputLocations":"{\"location1\": \"projectname:DATASET.table\",\"location2\": \"projectname:DATASET.table\",\"location3\": \"projectname:DATASET.table\",\"location4\": \"gs://bucket/filename.csv\",\"location5\":\"projectname:DATASET.table\",\"location6\":\"projectname:DATASET.table\",\"location7\":\"projectname:DATASET.table\",\"location8\":\"projectname:DATASET.table\",\"location9\": [\"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename\"]}",
        "outputLocations":"{\"projectname:DATASET.table\"}"
    }
}

让我知道这是否对你有效

在过去的6-7个小时里,我一直在经历同样的问题,最后我终于让它起作用了。似乎导致此问题的参数是“tempLocation”。另外,看起来在输入和输出位置参数中还有一组{}。请尝试以下操作:

BODY = {
    "jobName": "{jobname}".format(jobname=JOBNAME),
    "parameters": {
        "customGcsTempLocation": "gs://{bucket}/dts/temp".format(bucket=BUCKET),
        "inputLocations":"{\"location1\": \"projectname:DATASET.table\",\"location2\": \"projectname:DATASET.table\",\"location3\": \"projectname:DATASET.table\",\"location4\": \"gs://bucket/filename.csv\",\"location5\":\"projectname:DATASET.table\",\"location6\":\"projectname:DATASET.table\",\"location7\":\"projectname:DATASET.table\",\"location8\":\"projectname:DATASET.table\",\"location9\": [\"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename.tsv\", \"gs://bucket/folder/filename\"]}",
        "outputLocations":"{\"projectname:DATASET.table\"}"
    }
}

让我知道这是否对你有效

克里斯蒂安是正确的,但我还犯了一个错误,我发了一个帖子,以防在类似情况下对其他人有所帮助

我应该以不同的方式删除location9中的文件名,因为它们显然在一个列表中(而不仅仅是一个值)。下面显示了这是如何完成的:

\"location9\":\"[\\\"gs://bucket/folder/folder.tsv\\\",\\\"gs://bucket/folder/filename1122.tsv\\\",\\\"gs://bucket/folder/filename1123.tsv\\\",\\\"gs://bucket/folder/filename1124.tsv\\\",\\\"gs://bucket/folder/filename1125.tsv\\\",\\\"gs://bucket/folder/filename1126.tsv\\\",\\\"gs://bucket/folder/filename1127.tsv\\\",\\\"gs://bucket/folder/filename1128.tsv\\\",\\\"gs://bucket/folder/filename1129.tsv\\\",\\\"gs://bucket/folder/filename1201.tsv\\\",\\\"gs://bucket/folder/filename1202.tsv\\\",\\\"gs://bucket/folder/filename1203.tsv\\\",\\\"gs://bucket/folder/filename1204.tsv\\\",\\\"gs://bucket/folder/filename1205.tsv\\\",\\\"gs://bucket/folder/filename1206.tsv\\\",\\\"gs://bucket/folder/filename1207.tsv\\\",\\\"gs://bucket/folder/filename1208.tsv\\\",\\\"gs://bucket/folder/filename1209.tsv\\\",\\\"gs://bucket/folder/filename1210.tsv\\\",\\\"gs://bucket/folder/filename1211.tsv\\\",\\\"gs://bucket/folder/filename1212.tsv\\\"]\"

克里斯蒂安是正确的,但我还犯了一个错误,我发了一个帖子,以防在类似情况下对其他人有所帮助

我应该以不同的方式删除location9中的文件名,因为它们显然在一个列表中(而不仅仅是一个值)。下面显示了这是如何完成的:

\"location9\":\"[\\\"gs://bucket/folder/folder.tsv\\\",\\\"gs://bucket/folder/filename1122.tsv\\\",\\\"gs://bucket/folder/filename1123.tsv\\\",\\\"gs://bucket/folder/filename1124.tsv\\\",\\\"gs://bucket/folder/filename1125.tsv\\\",\\\"gs://bucket/folder/filename1126.tsv\\\",\\\"gs://bucket/folder/filename1127.tsv\\\",\\\"gs://bucket/folder/filename1128.tsv\\\",\\\"gs://bucket/folder/filename1129.tsv\\\",\\\"gs://bucket/folder/filename1201.tsv\\\",\\\"gs://bucket/folder/filename1202.tsv\\\",\\\"gs://bucket/folder/filename1203.tsv\\\",\\\"gs://bucket/folder/filename1204.tsv\\\",\\\"gs://bucket/folder/filename1205.tsv\\\",\\\"gs://bucket/folder/filename1206.tsv\\\",\\\"gs://bucket/folder/filename1207.tsv\\\",\\\"gs://bucket/folder/filename1208.tsv\\\",\\\"gs://bucket/folder/filename1209.tsv\\\",\\\"gs://bucket/folder/filename1210.tsv\\\",\\\"gs://bucket/folder/filename1211.tsv\\\",\\\"gs://bucket/folder/filename1212.tsv\\\"]\"

谢谢克里斯蒂安-你的建议肯定解决了我做错的一部分-谷歌支持为我解决了另一个问题,我会回复感谢克里斯蒂安-你的建议肯定解决了我做错的一部分-谷歌支持为我解决了另一个问题,我会回复