資源提示

資源提示可讓管線作者向執行器提供有關運算資源需求資訊。 您可以使用資源提示來定義特定轉換或整個管線的需求。 執行器負責解譯資源提示,且執行器可以忽略不支援的提示。

資源提示可以巢狀化。 例如,可以在複合轉換的子轉換上指定資源提示,而且該複合轉換也可以套用資源提示。 預設情況下,最內層的提示優先。 但是,提示可以定義自訂的調和行為。 例如,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")