我有一个管道,它生成的数据流图(序列化 JSON 表示)超出了 API 的允许限制,因此无法像通常那样通过 apache beam 的数据流运行器启动。并且使用指示参数运行数据流运行--experiments=upload_graph器不起作用,并且失败并说没有指定步骤。
通过错误收到有关此尺寸问题的通知时,会提供以下信息:
the size of the serialized JSON representation of the pipeline exceeds the allowable limit for the API.
Use experiment 'upload_graph' (--experiments=upload_graph)
to direct the runner to upload the JSON to your
GCS staging bucket instead of embedding in the API request.
Run Code Online (Sandbox Code Playgroud)
现在使用此参数,确实会导致数据流运行器将附加dataflow_graph.pb文件上传到通常的 pipeline.pb 文件旁边的暂存位置。我证实它确实存在于 gcp 存储中。
但是,gcp 数据流中的作业在启动后立即失败,并出现以下错误:
Runnable workflow has no steps specified.
Run Code Online (Sandbox Code Playgroud)
我已经用各种管道尝试过这个标志,甚至是 apache 梁示例管道,并看到了相同的行为。
这可以通过使用字数示例来重现:
mvn archetype:generate \
-DarchetypeGroupId=org.apache.beam \
-DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
-DarchetypeVersion=2.11.0 \ …Run Code Online (Sandbox Code Playgroud)