<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_181-google-v7) on Wed Aug 14 17:37:11 PDT 2019 -->
<title>PipelineOptions (Apache Beam 2.15.0-SNAPSHOT)</title>
<meta name="date" content="2019-08-14">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="PipelineOptions (Apache Beam 2.15.0-SNAPSHOT)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/beam/sdk/options/ManualDockerEnvironmentOptions.Options.html" title="class in org.apache.beam.sdk.options"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.AtomicLongFactory.html" title="class in org.apache.beam.sdk.options"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/beam/sdk/options/PipelineOptions.html" target="_top">Frames</a></li>
<li><a href="PipelineOptions.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.beam.sdk.options</div>
<h2 title="Interface PipelineOptions" class="title">Interface PipelineOptions</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="../../../../../org/apache/beam/sdk/transforms/display/HasDisplayData.html" title="interface in org.apache.beam.sdk.transforms.display">HasDisplayData</a></dd>
</dl>
<dl>
<dt>All Known Subinterfaces:</dt>
<dd><a href="../../../../../org/apache/beam/runners/apex/ApexPipelineOptions.html" title="interface in org.apache.beam.runners.apex">ApexPipelineOptions</a>, <a href="../../../../../org/apache/beam/sdk/options/ApplicationNameOptions.html" title="interface in org.apache.beam.sdk.options">ApplicationNameOptions</a>, <a href="../../../../../org/apache/beam/sdk/io/aws/options/AwsOptions.html" title="interface in org.apache.beam.sdk.io.aws.options">AwsOptions</a>, <a href="../../../../../org/apache/beam/sdk/io/aws2/options/AwsOptions.html" title="interface in org.apache.beam.sdk.io.aws2.options">AwsOptions</a>, <a href="../../../../../org/apache/beam/sdk/extensions/sql/example/BeamSqlDataCatalogExample.DCExamplePipelineOptions.html" title="interface in org.apache.beam.sdk.extensions.sql.example">BeamSqlDataCatalogExample.DCExamplePipelineOptions</a>, <a href="../../../../../org/apache/beam/sdk/extensions/sql/impl/BeamSqlPipelineOptions.html" title="interface in org.apache.beam.sdk.extensions.sql.impl">BeamSqlPipelineOptions</a>, <a href="../../../../../org/apache/beam/sdk/io/gcp/bigquery/BigQueryOptions.html" title="interface in org.apache.beam.sdk.io.gcp.bigquery">BigQueryOptions</a>, <a href="../../../../../org/apache/beam/runners/dataflow/options/CloudDebuggerOptions.html" title="interface in org.apache.beam.runners.dataflow.options">CloudDebuggerOptions</a>, <a href="../../../../../org/apache/beam/sdk/extensions/gcp/options/CloudResourceManagerOptions.html" title="interface in org.apache.beam.sdk.extensions.gcp.options">CloudResourceManagerOptions</a>, <a href="../../../../../org/apache/beam/sdk/extensions/sql/meta/provider/datacatalog/DataCatalogPipelineOptions.html" title="interface in org.apache.beam.sdk.extensions.sql.meta.provider.datacatalog">DataCatalogPipelineOptions</a>, <a href="../../../../../org/apache/beam/runners/dataflow/options/DataflowPipelineDebugOptions.html" title="interface in org.apache.beam.runners.dataflow.options">DataflowPipelineDebugOptions</a>, <a href="../../../../../org/apache/beam/runners/dataflow/options/DataflowPipelineOptions.html" title="interface in org.apache.beam.runners.dataflow.options">DataflowPipelineOptions</a>, <a href="../../../../../org/apache/beam/runners/dataflow/options/DataflowPipelineWorkerPoolOptions.html" title="interface in org.apache.beam.runners.dataflow.options">DataflowPipelineWorkerPoolOptions</a>, <a href="../../../../../org/apache/beam/runners/dataflow/options/DataflowProfilingOptions.html" title="interface in org.apache.beam.runners.dataflow.options">DataflowProfilingOptions</a>, <a href="../../../../../org/apache/beam/runners/dataflow/options/DataflowWorkerHarnessOptions.html" title="interface in org.apache.beam.runners.dataflow.options">DataflowWorkerHarnessOptions</a>, <a href="../../../../../org/apache/beam/runners/dataflow/options/DataflowWorkerLoggingOptions.html" title="interface in org.apache.beam.runners.dataflow.options">DataflowWorkerLoggingOptions</a>, <a href="../../../../../org/apache/beam/runners/direct/DirectOptions.html" title="interface in org.apache.beam.runners.direct">DirectOptions</a>, <a href="../../../../../org/apache/beam/runners/direct/DirectTestOptions.html" title="interface in org.apache.beam.runners.direct">DirectTestOptions</a>, <a href="../../../../../org/apache/beam/sdk/options/ExperimentalOptions.html" title="interface in org.apache.beam.sdk.options">ExperimentalOptions</a>, <a href="../../../../../org/apache/beam/runners/flink/FlinkPipelineOptions.html" title="interface in org.apache.beam.runners.flink">FlinkPipelineOptions</a>, <a href="../../../../../org/apache/beam/sdk/extensions/gcp/options/GcpOptions.html" title="interface in org.apache.beam.sdk.extensions.gcp.options">GcpOptions</a>, <a href="../../../../../org/apache/beam/sdk/extensions/gcp/options/GcsOptions.html" title="interface in org.apache.beam.sdk.extensions.gcp.options">GcsOptions</a>, <a href="../../../../../org/apache/beam/runners/gearpump/GearpumpPipelineOptions.html" title="interface in org.apache.beam.runners.gearpump">GearpumpPipelineOptions</a>, <a href="../../../../../org/apache/beam/sdk/extensions/gcp/options/GoogleApiDebugOptions.html" title="interface in org.apache.beam.sdk.extensions.gcp.options">GoogleApiDebugOptions</a>, <a href="../../../../../org/apache/beam/sdk/io/hdfs/HadoopFileSystemOptions.html" title="interface in org.apache.beam.sdk.io.hdfs">HadoopFileSystemOptions</a>, <a href="../../../../../org/apache/beam/runners/jet/JetPipelineOptions.html" title="interface in org.apache.beam.runners.jet">JetPipelineOptions</a>, <a href="../../../../../org/apache/beam/sdk/options/ManualDockerEnvironmentOptions.html" title="interface in org.apache.beam.sdk.options">ManualDockerEnvironmentOptions</a>, <a href="../../../../../org/apache/beam/sdk/metrics/MetricsOptions.html" title="interface in org.apache.beam.sdk.metrics">MetricsOptions</a>, <a href="../../../../../org/apache/beam/sdk/options/PortablePipelineOptions.html" title="interface in org.apache.beam.sdk.options">PortablePipelineOptions</a>, <a href="../../../../../org/apache/beam/sdk/io/gcp/pubsub/PubsubOptions.html" title="interface in org.apache.beam.sdk.io.gcp.pubsub">PubsubOptions</a>, <a href="../../../../../org/apache/beam/sdk/io/aws/options/S3Options.html" title="interface in org.apache.beam.sdk.io.aws.options">S3Options</a>, <a href="../../../../../org/apache/beam/sdk/options/SdkHarnessOptions.html" title="interface in org.apache.beam.sdk.options">SdkHarnessOptions</a>, <a href="../../../../../org/apache/beam/runners/spark/SparkContextOptions.html" title="interface in org.apache.beam.runners.spark">SparkContextOptions</a>, <a href="../../../../../org/apache/beam/runners/spark/SparkPipelineOptions.html" title="interface in org.apache.beam.runners.spark">SparkPipelineOptions</a>, <a href="../../../../../org/apache/beam/sdk/options/StreamingOptions.html" title="interface in org.apache.beam.sdk.options">StreamingOptions</a>, <a href="../../../../../org/apache/beam/sdk/io/gcp/bigquery/TestBigQueryOptions.html" title="interface in org.apache.beam.sdk.io.gcp.bigquery">TestBigQueryOptions</a>, <a href="../../../../../org/apache/beam/runners/dataflow/TestDataflowPipelineOptions.html" title="interface in org.apache.beam.runners.dataflow">TestDataflowPipelineOptions</a>, <a href="../../../../../org/apache/beam/sdk/testing/TestPipeline.TestValueProviderOptions.html" title="interface in org.apache.beam.sdk.testing">TestPipeline.TestValueProviderOptions</a>, <a href="../../../../../org/apache/beam/sdk/testing/TestPipelineOptions.html" title="interface in org.apache.beam.sdk.testing">TestPipelineOptions</a>, <a href="../../../../../org/apache/beam/runners/reference/testing/TestPortablePipelineOptions.html" title="interface in org.apache.beam.runners.reference.testing">TestPortablePipelineOptions</a>, <a href="../../../../../org/apache/beam/sdk/io/gcp/pubsub/TestPubsubOptions.html" title="interface in org.apache.beam.sdk.io.gcp.pubsub">TestPubsubOptions</a>, <a href="../../../../../org/apache/beam/runners/spark/TestSparkPipelineOptions.html" title="interface in org.apache.beam.runners.spark">TestSparkPipelineOptions</a></dd>
</dl>
<hr>
<br>
<pre>@ThreadSafe
public interface <span class="typeNameLabel">PipelineOptions</span>
extends <a href="../../../../../org/apache/beam/sdk/transforms/display/HasDisplayData.html" title="interface in org.apache.beam.sdk.transforms.display">HasDisplayData</a></pre>
<div class="block">PipelineOptions are used to configure Pipelines. You can extend <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> to create
 custom configuration options specific to your <a href="../../../../../org/apache/beam/sdk/Pipeline.html" title="class in org.apache.beam.sdk"><code>Pipeline</code></a>, for both local execution and
 execution via a <a href="../../../../../org/apache/beam/sdk/PipelineRunner.html" title="class in org.apache.beam.sdk"><code>PipelineRunner</code></a>.

 <p><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> and their subinterfaces represent a collection of properties which can
 be manipulated in a type safe manner. <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> is backed by a dynamic <code>Proxy</code> which allows for type safe manipulation of properties in an extensible fashion through
 plain old Java interfaces.

 <p><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> can be created with <a href="../../../../../org/apache/beam/sdk/options/PipelineOptionsFactory.html#create--"><code>PipelineOptionsFactory.create()</code></a> and <a href="../../../../../org/apache/beam/sdk/options/PipelineOptionsFactory.html#as-java.lang.Class-"><code>PipelineOptionsFactory.as(Class)</code></a>. They can be created from command-line arguments with <a href="../../../../../org/apache/beam/sdk/options/PipelineOptionsFactory.html#fromArgs-java.lang.String...-"><code>PipelineOptionsFactory.fromArgs(String[])</code></a>. They can be converted to another type by invoking
 <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#as-java.lang.Class-"><code>as(Class)</code></a> and can be accessed from within a <a href="../../../../../org/apache/beam/sdk/transforms/DoFn.html" title="class in org.apache.beam.sdk.transforms"><code>DoFn</code></a> by invoking
 <code>getPipelineOptions()</code> on the input <code>Context</code> object.

 <p>For example:

 <pre><code>
 // 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);
 </code></pre>

 <h2>Defining Your Own PipelineOptions</h2>

 <p>Defining your own <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> is the way for you to make configuration options
 available for both local execution and execution via a <a href="../../../../../org/apache/beam/sdk/PipelineRunner.html" title="class in org.apache.beam.sdk"><code>PipelineRunner</code></a>. 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.

 <p>To define your own <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a>, you create a public interface which extends <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> and define getter/setter pairs. These getter/setter pairs define a collection of
 <a href="https://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html">JavaBean
 properties</a>.

 <p>For example:

 <pre><code>
 // Creates a user defined property called "myProperty"
 public interface MyOptions extends PipelineOptions {
   String getMyProperty();
   void setMyProperty(String value);
 }
 </code></pre>

 <p>Note: Please see the section on Registration below when using custom property types.

 <h3>Restrictions</h3>

 <p>Since PipelineOptions can be "cast" to multiple types dynamically using <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#as-java.lang.Class-"><code>as(Class)</code></a>, a property must conform to the following set of restrictions:

 <ul>
   <li>Any property with the same name must have the same return type for all derived interfaces
       of <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a>.
   <li>Every bean property of any interface derived from <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> must have a
       getter and setter method.
   <li>Every method must conform to being a getter or setter for a JavaBean.
   <li>The derived interface of <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> must be composable with every interface
       part registered with the PipelineOptionsFactory.
   <li>Only getters may be annotated with <a href="https://static.javadoc.io/com.fasterxml.jackson.core/jackson-annotations/2.9.9/com/fasterxml/jackson/annotation/JsonIgnore.html?is-external=true" title="class or interface in com.fasterxml.jackson.annotation"><code>@JsonIgnore</code></a>.
   <li>If any getter is annotated with <a href="https://static.javadoc.io/com.fasterxml.jackson.core/jackson-annotations/2.9.9/com/fasterxml/jackson/annotation/JsonIgnore.html?is-external=true" title="class or interface in com.fasterxml.jackson.annotation"><code>@JsonIgnore</code></a>, then all getters for this
       property must be annotated with <a href="https://static.javadoc.io/com.fasterxml.jackson.core/jackson-annotations/2.9.9/com/fasterxml/jackson/annotation/JsonIgnore.html?is-external=true" title="class or interface in com.fasterxml.jackson.annotation"><code>@JsonIgnore</code></a>.
 </ul>

 <h3>Annotations For PipelineOptions</h3>

 <p><a href="../../../../../org/apache/beam/sdk/options/Description.html" title="annotation in org.apache.beam.sdk.options"><code>@Description</code></a> can be used to annotate an interface or a getter with useful
 information which is output when <code>--help</code> is invoked via <a href="../../../../../org/apache/beam/sdk/options/PipelineOptionsFactory.html#fromArgs-java.lang.String...-"><code>PipelineOptionsFactory.fromArgs(String[])</code></a>.

 <p><a href="../../../../../org/apache/beam/sdk/options/Default.html" title="annotation in org.apache.beam.sdk.options"><code>@Default</code></a> represents a set of annotations that can be used to annotate getter
 properties on <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> with information representing the default value to be
 returned if no value is specified. Any default implementation (using the <code>default</code> keyword)
 is ignored.

 <p><a href="../../../../../org/apache/beam/sdk/options/Hidden.html" title="annotation in org.apache.beam.sdk.options"><code>@Hidden</code></a> hides an option from being listed when <code>--help</code> is invoked via
 <a href="../../../../../org/apache/beam/sdk/options/PipelineOptionsFactory.html#fromArgs-java.lang.String...-"><code>PipelineOptionsFactory.fromArgs(String[])</code></a>.

 <p><a href="../../../../../org/apache/beam/sdk/options/Validation.html" title="annotation in org.apache.beam.sdk.options"><code>@Validation</code></a> represents a set of annotations that can be used to annotate
 getter properties on <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> with information representing the validation
 criteria to be used when validating with the <a href="../../../../../org/apache/beam/sdk/options/PipelineOptionsValidator.html" title="class in org.apache.beam.sdk.options"><code>PipelineOptionsValidator</code></a>. Validation will be
 performed if during construction of the <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a>, <a href="../../../../../org/apache/beam/sdk/options/PipelineOptionsFactory.html#withValidation--"><code>PipelineOptionsFactory.withValidation()</code></a> is invoked.

 <p><a href="https://static.javadoc.io/com.fasterxml.jackson.core/jackson-annotations/2.9.9/com/fasterxml/jackson/annotation/JsonIgnore.html?is-external=true" title="class or interface in com.fasterxml.jackson.annotation"><code>@JsonIgnore</code></a> is used to prevent a property from being serialized and
 available during execution of <a href="../../../../../org/apache/beam/sdk/transforms/DoFn.html" title="class in org.apache.beam.sdk.transforms"><code>DoFn</code></a>. See the Serialization section below for more details.

 <h2>Registration Of PipelineOptions</h2>

 <p>Registration of <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> by an application guarantees that the <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> is composable during execution of their <a href="../../../../../org/apache/beam/sdk/Pipeline.html" title="class in org.apache.beam.sdk"><code>Pipeline</code></a> and meets the
 restrictions listed above or will fail during registration. Registration also lists the
 registered <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> when <code>--help</code> is invoked via <a href="../../../../../org/apache/beam/sdk/options/PipelineOptionsFactory.html#fromArgs-java.lang.String...-"><code>PipelineOptionsFactory.fromArgs(String[])</code></a>.

 <p>Registration can be performed by invoking <a href="../../../../../org/apache/beam/sdk/options/PipelineOptionsFactory.html#register-java.lang.Class-"><code>PipelineOptionsFactory.register(java.lang.Class&lt;? extends org.apache.beam.sdk.options.PipelineOptions&gt;)</code></a> within a
 users application or via automatic registration by creating a <code>ServiceLoader</code> entry and a
 concrete implementation of the <a href="../../../../../org/apache/beam/sdk/options/PipelineOptionsRegistrar.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptionsRegistrar</code></a> interface.

 <p>It is optional but recommended to use one of the many build time tools such as <code>AutoService</code> to generate the necessary META-INF files automatically.

 <p>A list of registered options can be fetched from <a href="../../../../../org/apache/beam/sdk/options/PipelineOptionsFactory.html#getRegisteredOptions--"><code>PipelineOptionsFactory.getRegisteredOptions()</code></a>.

 <h2>Serialization Of PipelineOptions</h2>

 <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> is intentionally <i>not</i> marked <code>Serializable</code>, in order
 to discourage pipeline authors from capturing <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> 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 <a href="../../../../../org/apache/beam/sdk/Pipeline.html#run-org.apache.beam.sdk.options.PipelineOptions-"><code>Pipeline.run(PipelineOptions)</code></a>.

 <p>However, <a href="../../../../../org/apache/beam/sdk/PipelineRunner.html" title="class in org.apache.beam.sdk"><code>PipelineRunner</code></a>s require support for options to be serialized. Each property
 within <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> must be able to be serialized using Jackson's <a href="https://static.javadoc.io/com.fasterxml.jackson.core/jackson-databind/2.9.9.3/com/fasterxml/jackson/databind/ObjectMapper.html?is-external=true" title="class or interface in com.fasterxml.jackson.databind"><code>ObjectMapper</code></a>
 or the getter method for the property annotated with <a href="https://static.javadoc.io/com.fasterxml.jackson.core/jackson-annotations/2.9.9/com/fasterxml/jackson/annotation/JsonIgnore.html?is-external=true" title="class or interface in com.fasterxml.jackson.annotation"><code>@JsonIgnore</code></a>.

 <p>Jackson supports serialization of many types and supports a useful set of <a
 href="https://github.com/FasterXML/jackson-annotations">annotations</a> to aid in serialization
 of custom types. We point you to the public <a
 href="https://github.com/FasterXML/jackson">Jackson documentation</a> when attempting to add
 serialization support for your custom types. Note that <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> relies on
 Jackson's ability to automatically configure the <a href="https://static.javadoc.io/com.fasterxml.jackson.core/jackson-databind/2.9.9.3/com/fasterxml/jackson/databind/ObjectMapper.html?is-external=true" title="class or interface in com.fasterxml.jackson.databind"><code>ObjectMapper</code></a> with additional modules via
 <a href="https://static.javadoc.io/com.fasterxml.jackson.core/jackson-databind/2.9.9.3/com/fasterxml/jackson/databind/ObjectMapper.html?is-external=true#findModules--" title="class or interface in com.fasterxml.jackson.databind"><code>ObjectMapper.findModules()</code></a>.

 <p>Note: It is an error to have the same property available in multiple interfaces with only some
 of them being annotated with <a href="https://static.javadoc.io/com.fasterxml.jackson.core/jackson-annotations/2.9.9/com/fasterxml/jackson/annotation/JsonIgnore.html?is-external=true" title="class or interface in com.fasterxml.jackson.annotation"><code>@JsonIgnore</code></a>. It is also an error to mark a setter
 for a property with <a href="https://static.javadoc.io/com.fasterxml.jackson.core/jackson-annotations/2.9.9/com/fasterxml/jackson/annotation/JsonIgnore.html?is-external=true" title="class or interface in com.fasterxml.jackson.annotation"><code>@JsonIgnore</code></a>.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!--   -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Interface and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.AtomicLongFactory.html" title="class in org.apache.beam.sdk.options">PipelineOptions.AtomicLongFactory</a></span></code>
<div class="block"><a href="../../../../../org/apache/beam/sdk/options/DefaultValueFactory.html" title="interface in org.apache.beam.sdk.options"><code>DefaultValueFactory</code></a> which supplies an ID that is guaranteed to be unique within the
 given process.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.CheckEnabled.html" title="enum in org.apache.beam.sdk.options">PipelineOptions.CheckEnabled</a></span></code>
<div class="block">Enumeration of the possible states for a given check.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.DirectRunner.html" title="class in org.apache.beam.sdk.options">PipelineOptions.DirectRunner</a></span></code>
<div class="block">A <a href="../../../../../org/apache/beam/sdk/options/DefaultValueFactory.html" title="interface in org.apache.beam.sdk.options"><code>DefaultValueFactory</code></a> that obtains the class of the <code>DirectRunner</code> if it exists
 on the classpath, and throws an exception otherwise.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.JobNameFactory.html" title="class in org.apache.beam.sdk.options">PipelineOptions.JobNameFactory</a></span></code>
<div class="block">Returns a normalized job name constructed from <a href="../../../../../org/apache/beam/sdk/options/ApplicationNameOptions.html#getAppName--"><code>ApplicationNameOptions.getAppName()</code></a>, the
 local system user name (if available), the current time, and a random integer.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.UserAgentFactory.html" title="class in org.apache.beam.sdk.options">PipelineOptions.UserAgentFactory</a></span></code>
<div class="block">Returns a user agent string constructed from <code>ReleaseInfo.getName()</code> and <code>ReleaseInfo.getVersion()</code>, in the format <code>[name]/[version]</code>.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>&lt;T extends <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options">PipelineOptions</a>&gt;<br>T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#as-java.lang.Class-">as</a></span>(java.lang.Class&lt;T&gt;&nbsp;kls)</code>
<div class="block">Transforms this object into an object of type <code>&lt;T&gt;</code> saving each property that has been
 manipulated.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#getJobName--">getJobName</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#getOptionsId--">getOptionsId</a></span>()</code>
<div class="block">Provides a process wide unique ID for this <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> object, assigned at graph
 construction time.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>java.lang.Class&lt;? extends <a href="../../../../../org/apache/beam/sdk/PipelineRunner.html" title="class in org.apache.beam.sdk">PipelineRunner</a>&lt;?&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#getRunner--">getRunner</a></span>()</code>
<div class="block">The pipeline runner that will be used to execute the pipeline.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.CheckEnabled.html" title="enum in org.apache.beam.sdk.options">PipelineOptions.CheckEnabled</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#getStableUniqueNames--">getStableUniqueNames</a></span>()</code>
<div class="block">Whether to check for stable unique names on each transform.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#getTempLocation--">getTempLocation</a></span>()</code>
<div class="block">A pipeline level default location for storing temporary files.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#getUserAgent--">getUserAgent</a></span>()</code>
<div class="block">A user agent string as per RFC2616, describing the pipeline to external services.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>java.util.Map&lt;java.lang.String,java.util.Map&lt;java.lang.String,java.lang.Object&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#outputRuntimeOptions--">outputRuntimeOptions</a></span>()</code>
<div class="block">Returns a map of properties which correspond to <a href="../../../../../org/apache/beam/sdk/options/ValueProvider.RuntimeValueProvider.html" title="class in org.apache.beam.sdk.options"><code>ValueProvider.RuntimeValueProvider</code></a>,
 keyed by the property name.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#setJobName-java.lang.String-">setJobName</a></span>(java.lang.String&nbsp;jobName)</code>&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#setOptionsId-long-">setOptionsId</a></span>(long&nbsp;id)</code>&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#setRunner-java.lang.Class-">setRunner</a></span>(java.lang.Class&lt;? extends <a href="../../../../../org/apache/beam/sdk/PipelineRunner.html" title="class in org.apache.beam.sdk">PipelineRunner</a>&lt;?&gt;&gt;&nbsp;kls)</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#setStableUniqueNames-org.apache.beam.sdk.options.PipelineOptions.CheckEnabled-">setStableUniqueNames</a></span>(<a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.CheckEnabled.html" title="enum in org.apache.beam.sdk.options">PipelineOptions.CheckEnabled</a>&nbsp;enabled)</code>&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#setTempLocation-java.lang.String-">setTempLocation</a></span>(java.lang.String&nbsp;value)</code>&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#setUserAgent-java.lang.String-">setUserAgent</a></span>(java.lang.String&nbsp;userAgent)</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.beam.sdk.transforms.display.HasDisplayData">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.beam.sdk.transforms.display.<a href="../../../../../org/apache/beam/sdk/transforms/display/HasDisplayData.html" title="interface in org.apache.beam.sdk.transforms.display">HasDisplayData</a></h3>
<code><a href="../../../../../org/apache/beam/sdk/transforms/display/HasDisplayData.html#populateDisplayData-org.apache.beam.sdk.transforms.display.DisplayData.Builder-">populateDisplayData</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="as-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>as</h4>
<pre>&lt;T extends <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options">PipelineOptions</a>&gt;&nbsp;T&nbsp;as(java.lang.Class&lt;T&gt;&nbsp;kls)</pre>
<div class="block">Transforms this object into an object of type <code>&lt;T&gt;</code> saving each property that has been
 manipulated. <code>&lt;T&gt;</code> must extend <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a>.

 <p>If <code>&lt;T&gt;</code> is not registered with the <a href="../../../../../org/apache/beam/sdk/options/PipelineOptionsFactory.html" title="class in org.apache.beam.sdk.options"><code>PipelineOptionsFactory</code></a>, then we attempt to
 verify that <code>&lt;T&gt;</code> is composable with every interface that this instance of the <code>PipelineOptions</code> has seen.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>kls</code> - The class of the type to transform to.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>An object of type kls.</dd>
</dl>
</li>
</ul>
<a name="getRunner--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRunner</h4>
<pre><a href="../../../../../org/apache/beam/sdk/options/Validation.Required.html" title="annotation in org.apache.beam.sdk.options">@Validation.Required</a>
 <a href="../../../../../org/apache/beam/sdk/options/Default.InstanceFactory.html" title="annotation in org.apache.beam.sdk.options">@Default.InstanceFactory</a>(<a href="../../../../../org/apache/beam/sdk/options/Default.InstanceFactory.html#value--">value</a>=<a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.DirectRunner.html" title="class in org.apache.beam.sdk.options">PipelineOptions.DirectRunner.class</a>)
java.lang.Class&lt;? extends <a href="../../../../../org/apache/beam/sdk/PipelineRunner.html" title="class in org.apache.beam.sdk">PipelineRunner</a>&lt;?&gt;&gt;&nbsp;getRunner()</pre>
<div class="block">The pipeline runner that will be used to execute the pipeline. For registered runners, the
 class name can be specified, otherwise the fully qualified name needs to be specified.</div>
</li>
</ul>
<a name="setRunner-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setRunner</h4>
<pre>void&nbsp;setRunner(java.lang.Class&lt;? extends <a href="../../../../../org/apache/beam/sdk/PipelineRunner.html" title="class in org.apache.beam.sdk">PipelineRunner</a>&lt;?&gt;&gt;&nbsp;kls)</pre>
</li>
</ul>
<a name="getStableUniqueNames--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getStableUniqueNames</h4>
<pre><a href="../../../../../org/apache/beam/sdk/options/Validation.Required.html" title="annotation in org.apache.beam.sdk.options">@Validation.Required</a>
 <a href="../../../../../org/apache/beam/sdk/options/Default.Enum.html" title="annotation in org.apache.beam.sdk.options">@Default.Enum</a>(<a href="../../../../../org/apache/beam/sdk/options/Default.Enum.html#value--">value</a>="WARNING")
<a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.CheckEnabled.html" title="enum in org.apache.beam.sdk.options">PipelineOptions.CheckEnabled</a>&nbsp;getStableUniqueNames()</pre>
<div class="block">Whether to check for stable unique names on each transform. This is necessary to support
 updating of pipelines.</div>
</li>
</ul>
<a name="setStableUniqueNames-org.apache.beam.sdk.options.PipelineOptions.CheckEnabled-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setStableUniqueNames</h4>
<pre>void&nbsp;setStableUniqueNames(<a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.CheckEnabled.html" title="enum in org.apache.beam.sdk.options">PipelineOptions.CheckEnabled</a>&nbsp;enabled)</pre>
</li>
</ul>
<a name="getTempLocation--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTempLocation</h4>
<pre>java.lang.String&nbsp;getTempLocation()</pre>
<div class="block">A pipeline level default location for storing temporary files.

 <p>This can be a path of any file system.

 <p><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html#getTempLocation--"><code>getTempLocation()</code></a> can be used as a default location in other <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a>.

 <p>If it is unset, <a href="../../../../../org/apache/beam/sdk/PipelineRunner.html" title="class in org.apache.beam.sdk"><code>PipelineRunner</code></a> can override it.</div>
</li>
</ul>
<a name="setTempLocation-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setTempLocation</h4>
<pre>void&nbsp;setTempLocation(java.lang.String&nbsp;value)</pre>
</li>
</ul>
<a name="getJobName--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJobName</h4>
<pre><a href="../../../../../org/apache/beam/sdk/options/Default.InstanceFactory.html" title="annotation in org.apache.beam.sdk.options">@Default.InstanceFactory</a>(<a href="../../../../../org/apache/beam/sdk/options/Default.InstanceFactory.html#value--">value</a>=<a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.JobNameFactory.html" title="class in org.apache.beam.sdk.options">PipelineOptions.JobNameFactory.class</a>)
java.lang.String&nbsp;getJobName()</pre>
</li>
</ul>
<a name="setJobName-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setJobName</h4>
<pre>void&nbsp;setJobName(java.lang.String&nbsp;jobName)</pre>
</li>
</ul>
<a name="outputRuntimeOptions--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>outputRuntimeOptions</h4>
<pre>java.util.Map&lt;java.lang.String,java.util.Map&lt;java.lang.String,java.lang.Object&gt;&gt;&nbsp;outputRuntimeOptions()</pre>
<div class="block">Returns a map of properties which correspond to <a href="../../../../../org/apache/beam/sdk/options/ValueProvider.RuntimeValueProvider.html" title="class in org.apache.beam.sdk.options"><code>ValueProvider.RuntimeValueProvider</code></a>,
 keyed by the property name. The value is a map containing type and default information.</div>
</li>
</ul>
<a name="getOptionsId--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOptionsId</h4>
<pre><a href="../../../../../org/apache/beam/sdk/options/Hidden.html" title="annotation in org.apache.beam.sdk.options">@Hidden</a>
 <a href="../../../../../org/apache/beam/sdk/options/Default.InstanceFactory.html" title="annotation in org.apache.beam.sdk.options">@Default.InstanceFactory</a>(<a href="../../../../../org/apache/beam/sdk/options/Default.InstanceFactory.html#value--">value</a>=<a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.AtomicLongFactory.html" title="class in org.apache.beam.sdk.options">PipelineOptions.AtomicLongFactory.class</a>)
long&nbsp;getOptionsId()</pre>
<div class="block">Provides a process wide unique ID for this <a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.html" title="interface in org.apache.beam.sdk.options"><code>PipelineOptions</code></a> object, assigned at graph
 construction time.</div>
</li>
</ul>
<a name="setOptionsId-long-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setOptionsId</h4>
<pre>void&nbsp;setOptionsId(long&nbsp;id)</pre>
</li>
</ul>
<a name="getUserAgent--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUserAgent</h4>
<pre><a href="../../../../../org/apache/beam/sdk/options/Default.InstanceFactory.html" title="annotation in org.apache.beam.sdk.options">@Default.InstanceFactory</a>(<a href="../../../../../org/apache/beam/sdk/options/Default.InstanceFactory.html#value--">value</a>=<a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.UserAgentFactory.html" title="class in org.apache.beam.sdk.options">PipelineOptions.UserAgentFactory.class</a>)
java.lang.String&nbsp;getUserAgent()</pre>
<div class="block">A user agent string as per RFC2616, describing the pipeline to external services.

 <p>https://www.ietf.org/rfc/rfc2616.txt

 <p>It should follow the BNF Form:

 <pre><code>
 user agent         = 1*(product | comment)
 product            = token ["/" product-version]
 product-version    = token
 </code></pre>

 Where a token is a series of characters without a separator.

 <p>The string defaults to <code>[name]/[version]</code> based on the properties of the Apache Beam
 release.</div>
</li>
</ul>
<a name="setUserAgent-java.lang.String-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setUserAgent</h4>
<pre>void&nbsp;setUserAgent(java.lang.String&nbsp;userAgent)</pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/beam/sdk/options/ManualDockerEnvironmentOptions.Options.html" title="class in org.apache.beam.sdk.options"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/beam/sdk/options/PipelineOptions.AtomicLongFactory.html" title="class in org.apache.beam.sdk.options"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/beam/sdk/options/PipelineOptions.html" target="_top">Frames</a></li>
<li><a href="PipelineOptions.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
