以下答案包括对以下常见问题的回答。
答案 0 :(得分:6)
每个Dataflow作业都将Cloud Storage用于两个目的:
登台位置是Dataflow SDK上载执行作业所需的jar的位置。数据流服务需要读取访问分段位置。
SDK需要写入访问分段才能上传包含作业代码的jar。但是,如果所有jar都已在当前表单中暂存,则SDK可以使用只读访问权限执行作业。
请注意,暂存文件会在作业中保留。
数据流服务使用临时位置在作业执行期间进行临时存储。该服务需要写访问临时位置。
在工作成功时删除临时存储。
使用DataflowPipelineOptions控制分段位置和临时位置。请注意,如果只指定了这两个位置中的一个,那么Dataflow将为两者使用相同的路径。
现在,假设您之前已将所有jar分别上载到分段位置,只要具有对分段位置具有只读权限的用户应该能够执行作业,只要她指定一个单独的可写临时位置即可。以下示例命令将运行WordCount:
java -cp your_bundled_jar com.google.cloud.dataflow.examples.WordCount
--project=PROJECT --runner=BlockingDataflowPipelineRunner
--stagingLocation=gs://READONLY-BUCKET/staging
--tempLocation=gs:/WRITABLE-BUCKET/temp
--output=gs://WRITABLE-BUCKET/output