资源提示

资源提示允许管道作者向运行器提供有关计算资源需求的信息。你可以使用资源提示来定义特定转换或整个管道的需求。运行器负责解释资源提示,并且运行器可以忽略不支持的提示。

资源提示可以嵌套。例如,可以在复合转换的子转换上指定资源提示,并且该复合转换也可以应用资源提示。默认情况下,最内层的提示优先。但是,提示可以定义自定义协调行为。例如,min_ram 使用管道中给定步骤上设置的所有 min_ram 值的最大值。

可用提示

目前,Beam 支持以下资源提示

资源提示的解释和启动可能因运行器而异。有关示例实现,请参阅 Dataflow 资源提示

为管道指定资源提示

要为整个管道指定资源提示,可以使用管道选项。以下命令显示了基本语法。

mvn compile exec:java -Dexec.mainClass=com.example.MyPipeline \
    -Dexec.args="... \
                 --resourceHints=min_ram=<N>GB \
                 --resourceHints=accelerator='hint'" \
    -Pdirect-runner
python my_pipeline.py \
    ... \
    --resource_hints min_ram=<N>GB \
    --resource_hints accelerator="hint"

为转换指定资源提示

你可以使用 setResourceHints 在程序中为管道转换设置资源提示。

你可以使用 PTransforms.with_resource_hints 在程序中为管道转换设置资源提示(另请参阅 ResourceHint)。

pcoll.apply(MyCompositeTransform.of(...)
    .setResourceHints(
        ResourceHints.create()
            .withMinRam("15GB")
            .withAccelerator("type:nvidia-tesla-k80;count:1;install-nvidia-driver")))

pcoll.apply(ParDo.of(new BigMemFn())
    .setResourceHints(
        ResourceHints.create().withMinRam("30GB")))
pcoll | MyPTransform().with_resource_hints(
    min_ram="4GB",
    accelerator="type:nvidia-tesla-k80;count:1;install-nvidia-driver")

pcoll | beam.ParDo(BigMemFn()).with_resource_hints(
    min_ram="30GB")