Параметр должен быть заключен в объект ValueProvider, чтобы конвейер шаблона мог получить доступ к значению времени выполнения этого параметра. Все предоставленные примеры шаблонов здесь демонстрируют, как ValueProvider можно использовать для параметризации конвейера шаблона.
Взгляните на конвейер WordCount в качестве примера.
Как видите, конвейер использует ValueProvider (вместо простой String) для чтения пути к файлу, для которого необходимо выполнить WordCount:
@Description("Path of the file to read from")
ValueProvider<String> getInputFile();
void setInputFile(ValueProvider<String> value);
Поскольку значение inputFile неизвестно до времени выполнения (когда шаблон фактически выполняется с допустимыми входами), преобразование с использованием ValueProvider будет откладывать чтение значения параметра до времени выполнения (например, внутри DoFn).
Собственное преобразование TextIO.Read Beam обеспечивает поддержку для чтения из ValueProvider в дополнение к чтению из String.