@ThreadSafe public interface PipelineOptions extends HasDisplayData
PipelineOptions to create
 custom configuration options specific to your Pipeline, for both local execution and
 execution via a PipelineRunner.
 PipelineOptions and their subinterfaces represent a collection of properties which can
 be manipulated in a type safe manner. PipelineOptions is backed by a dynamic Proxy which allows for type safe manipulation of properties in an extensible fashion through
 plain old Java interfaces.
 
PipelineOptions can be created with PipelineOptionsFactory.create() and PipelineOptionsFactory.as(Class). They can be created from command-line arguments with PipelineOptionsFactory.fromArgs(String[]). They can be converted to another type by invoking
 as(Class) and can be accessed from within a DoFn by invoking
 getPipelineOptions() on the input Context object.
 
For example:
 // The most common way to construct PipelineOptions is via command-line argument parsing:
 public static void main(String[] args) {
   // Will parse the arguments passed into the application and construct a PipelineOptions
   // Note that --help will print registered options, and --help=PipelineOptionsClassName
   // will print out usage for the specific class.
   PipelineOptions options =
       PipelineOptionsFactory.fromArgs(args).create();
   Pipeline p = Pipeline.create(options);
   ...
   p.run();
 }
 // To create options for the DirectRunner:
 DirectOptions directRunnerOptions =
     PipelineOptionsFactory.as(DirectOptions.class);
 // To cast from one type to another using the as(Class) method:
 ApplicationNameOptions applicationNameOptions =
     directPipelineOptions.as(ApplicationNameOptions.class);
 // Options for the same property are shared between types
 // The statement below will print out the name of the enclosing class by default
 System.out.println(applicationNameOptions.getApplicationName());
 // Prints out registered options.
 PipelineOptionsFactory.printHelp(System.out);
 // Prints out options which are available to be set on ApplicationNameOptions
 PipelineOptionsFactory.printHelp(System.out, ApplicationNameOptions.class);
 Defining your own PipelineOptions is the way for you to make configuration options
 available for both local execution and execution via a PipelineRunner. By having
 PipelineOptionsFactory as your command-line interpreter, you will provide a standardized way for
 users to interact with your application via the command-line.
 
To define your own PipelineOptions, you create an interface which extends PipelineOptions and define getter/setter pairs. These getter/setter pairs define a collection of
 JavaBean
 properties.
 
For example:
 // Creates a user defined property called "myProperty"
 public interface MyOptions extends PipelineOptions {
   String getMyProperty();
   void setMyProperty(String value);
 }
 Note: Please see the section on Registration below when using custom property types.
Since PipelineOptions can be "cast" to multiple types dynamically using as(Class), a property must conform to the following set of restrictions:
 
PipelineOptions.
   PipelineOptions must have a
       getter and setter method.
   PipelineOptions must be composable with every interface
       part registered with the PipelineOptionsFactory.
   @JsonIgnore.
   @JsonIgnore, then all getters for this
       property must be annotated with @JsonIgnore.
 @Description can be used to annotate an interface or a getter with useful
 information which is output when --help is invoked via PipelineOptionsFactory.fromArgs(String[]).
 
@Default represents a set of annotations that can be used to annotate getter
 properties on PipelineOptions with information representing the default value to be
 returned if no value is specified. Any default implementation (using the default keyword)
 is ignored.
 
@Hidden hides an option from being listed when --help is invoked via
 PipelineOptionsFactory.fromArgs(String[]).
 
@Validation represents a set of annotations that can be used to annotate
 getter properties on PipelineOptions with information representing the validation
 criteria to be used when validating with the PipelineOptionsValidator. Validation will be
 performed if during construction of the PipelineOptions, PipelineOptionsFactory.withValidation() is invoked.
 
@JsonIgnore is used to prevent a property from being serialized and
 available during execution of DoFn. See the Serialization section below for more details.
 
Registration of PipelineOptions by an application guarantees that the PipelineOptions is composable during execution of their Pipeline and meets the
 restrictions listed above or will fail during registration. Registration also lists the
 registered PipelineOptions when --help is invoked via PipelineOptionsFactory.fromArgs(String[]).
 
Registration can be performed by invoking PipelineOptionsFactory.register(java.lang.Class<? extends org.apache.beam.sdk.options.PipelineOptions>) within a
 users application or via automatic registration by creating a ServiceLoader entry and a
 concrete implementation of the PipelineOptionsRegistrar interface.
 
It is optional but recommended to use one of the many build time tools such as AutoService to generate the necessary META-INF files automatically.
 
A list of registered options can be fetched from PipelineOptionsFactory.getRegisteredOptions().
 
PipelineOptions is intentionally not marked Serializable, in order
 to discourage pipeline authors from capturing PipelineOptions at pipeline construction
 time, because a pipeline may be saved as a template and run with a different set of options than
 the ones it was constructed with. See Pipeline.run(PipelineOptions).
 However, PipelineRunners require support for options to be serialized. Each property
 within PipelineOptions must be able to be serialized using Jackson's ObjectMapper
 or the getter method for the property annotated with @JsonIgnore.
 
Jackson supports serialization of many types and supports a useful set of annotations to aid in serialization
 of custom types. We point you to the public Jackson documentation when attempting to add
 serialization support for your custom types. Note that PipelineOptions relies on
 Jackson's ability to automatically configure the ObjectMapper with additional modules via
 ObjectMapper.findModules().
 
Note: It is an error to have the same property available in multiple interfaces with only some
 of them being annotated with @JsonIgnore. It is also an error to mark a setter
 for a property with @JsonIgnore.
| Modifier and Type | Interface and Description | 
|---|---|
| static class  | PipelineOptions.AtomicLongFactoryDefaultValueFactorywhich supplies an ID that is guaranteed to be unique within the
 given process. | 
| static class  | PipelineOptions.CheckEnabledEnumeration of the possible states for a given check. | 
| static class  | PipelineOptions.DirectRunnerA  DefaultValueFactorythat obtains the class of theDirectRunnerif it exists
 on the classpath, and throws an exception otherwise. | 
| static class  | PipelineOptions.JobNameFactoryReturns a normalized job name constructed from  ApplicationNameOptions.getAppName(), the
 local system user name (if available), the current time, and a random integer. | 
| static class  | PipelineOptions.NoOpMetricsSinkA  DefaultValueFactorythat obtains the class of theNoOpMetricsSinkif it
 exists on the classpath, and throws an exception otherwise. | 
| static class  | PipelineOptions.UserAgentFactoryReturns a user agent string constructed from  ReleaseInfo.getName()andReleaseInfo.getVersion(), in the format[name]/[version]. | 
| Modifier and Type | Method and Description | 
|---|---|
| <T extends PipelineOptions> | as(java.lang.Class<T> kls)Transforms this object into an object of type  <T>saving each property that has been
 manipulated. | 
| java.lang.String | getJobName() | 
| java.lang.String | getMetricsHttpSinkUrl() | 
| java.lang.Long | getMetricsPushPeriod() | 
| java.lang.Class<? extends MetricsSink> | getMetricsSink() | 
| long | getOptionsId()Provides a process wide unique ID for this  PipelineOptionsobject, assigned at graph
 construction time. | 
| java.lang.Class<? extends PipelineRunner<?>> | getRunner()The pipeline runner that will be used to execute the pipeline. | 
| PipelineOptions.CheckEnabled | getStableUniqueNames()Whether to check for stable unique names on each transform. | 
| java.lang.String | getTempLocation()A pipeline level default location for storing temporary files. | 
| java.lang.String | getUserAgent()A user agent string as per RFC2616, describing the pipeline to external services. | 
| java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>> | outputRuntimeOptions()Returns a map of properties which correspond to  ValueProvider.RuntimeValueProvider,
 keyed by the property name. | 
| void | setJobName(java.lang.String jobName) | 
| void | setMetricsHttpSinkUrl(java.lang.String metricsSink) | 
| void | setMetricsPushPeriod(java.lang.Long period) | 
| void | setMetricsSink(java.lang.Class<? extends MetricsSink> metricsSink) | 
| void | setOptionsId(long id) | 
| void | setRunner(java.lang.Class<? extends PipelineRunner<?>> kls) | 
| void | setStableUniqueNames(PipelineOptions.CheckEnabled enabled) | 
| void | setTempLocation(java.lang.String value) | 
| void | setUserAgent(java.lang.String userAgent) | 
populateDisplayData<T extends PipelineOptions> T as(java.lang.Class<T> kls)
<T> saving each property that has been
 manipulated. <T> must extend PipelineOptions.
 If <T> is not registered with the PipelineOptionsFactory, then we attempt to
 verify that <T> is composable with every interface that this instance of the PipelineOptions has seen.
kls - The class of the type to transform to.@Validation.Required @Default.InstanceFactory(value=PipelineOptions.DirectRunner.class) java.lang.Class<? extends PipelineRunner<?>> getRunner()
void setRunner(java.lang.Class<? extends PipelineRunner<?>> kls)
@Validation.Required @Default.Enum(value="WARNING") PipelineOptions.CheckEnabled getStableUniqueNames()
void setStableUniqueNames(PipelineOptions.CheckEnabled enabled)
java.lang.String getTempLocation()
This can be a path of any file system.
getTempLocation() can be used as a default location in other PipelineOptions.
 
If it is unset, PipelineRunner can override it.
void setTempLocation(java.lang.String value)
@Default.InstanceFactory(value=PipelineOptions.JobNameFactory.class) java.lang.String getJobName()
void setJobName(java.lang.String jobName)
java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>> outputRuntimeOptions()
ValueProvider.RuntimeValueProvider,
 keyed by the property name. The value is a map containing type and default information.@Hidden @Default.InstanceFactory(value=PipelineOptions.AtomicLongFactory.class) long getOptionsId()
PipelineOptions object, assigned at graph
 construction time.void setOptionsId(long id)
@Default.InstanceFactory(value=PipelineOptions.UserAgentFactory.class) java.lang.String getUserAgent()
https://www.ietf.org/rfc/rfc2616.txt
It should follow the BNF Form:
 user agent         = 1*(product | comment)
 product            = token ["/" product-version]
 product-version    = token
 The string defaults to [name]/[version] based on the properties of the Apache Beam
 release.
void setUserAgent(java.lang.String userAgent)
@Default.InstanceFactory(value=PipelineOptions.NoOpMetricsSink.class) java.lang.Class<? extends MetricsSink> getMetricsSink()
void setMetricsSink(java.lang.Class<? extends MetricsSink> metricsSink)
@Default.Long(value=5L) java.lang.Long getMetricsPushPeriod()
void setMetricsPushPeriod(java.lang.Long period)
java.lang.String getMetricsHttpSinkUrl()
void setMetricsHttpSinkUrl(java.lang.String metricsSink)