

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>apache_beam.runners.interactive.pipeline_instrument module &mdash; Apache Beam  documentation</title>
  

  
  
  
  

  
  <script type="text/javascript" src="_static/js/modernizr.min.js"></script>
  
    
      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
        <script type="text/javascript" src="_static/jquery.js"></script>
        <script type="text/javascript" src="_static/underscore.js"></script>
        <script type="text/javascript" src="_static/doctools.js"></script>
        <script type="text/javascript" src="_static/language_data.js"></script>
    
    <script type="text/javascript" src="_static/js/theme.js"></script>

    

  
  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    <link rel="index" title="Index" href="genindex.html" />
    <link rel="search" title="Search" href="search.html" />
    <link rel="next" title="apache_beam.runners.interactive.recording_manager module" href="apache_beam.runners.interactive.recording_manager.html" />
    <link rel="prev" title="apache_beam.runners.interactive.pipeline_fragment module" href="apache_beam.runners.interactive.pipeline_fragment.html" /> 
</head>

<body class="wy-body-for-nav">

   
  <div class="wy-grid-for-nav">
    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >
          

          
            <a href="index.html" class="icon icon-home"> Apache Beam
          

          
          </a>

          
            
            
          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
              
            
            
              <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="apache_beam.coders.html">apache_beam.coders package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.dataframe.html">apache_beam.dataframe package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.internal.html">apache_beam.internal package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.io.html">apache_beam.io package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.metrics.html">apache_beam.metrics package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.ml.html">apache_beam.ml package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.options.html">apache_beam.options package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.portability.html">apache_beam.portability package</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="apache_beam.runners.html">apache_beam.runners package</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="apache_beam.runners.html#subpackages">Subpackages</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="apache_beam.runners.dataflow.html">apache_beam.runners.dataflow package</a></li>
<li class="toctree-l3"><a class="reference internal" href="apache_beam.runners.direct.html">apache_beam.runners.direct package</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="apache_beam.runners.interactive.html">apache_beam.runners.interactive package</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="apache_beam.runners.interactive.html#subpackages">Subpackages</a></li>
<li class="toctree-l4 current"><a class="reference internal" href="apache_beam.runners.interactive.html#submodules">Submodules</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="apache_beam.runners.internal.html">apache_beam.runners.internal package</a></li>
<li class="toctree-l3"><a class="reference internal" href="apache_beam.runners.job.html">apache_beam.runners.job package</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="apache_beam.runners.html#submodules">Submodules</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.testing.html">apache_beam.testing package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.tools.html">apache_beam.tools package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.transforms.html">apache_beam.transforms package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.typehints.html">apache_beam.typehints package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.utils.html">apache_beam.utils package</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.error.html">apache_beam.error module</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.pipeline.html">apache_beam.pipeline module</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.pvalue.html">apache_beam.pvalue module</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.version.html">apache_beam.version module</a></li>
</ul>

            
          
        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" aria-label="top navigation">
        
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="index.html">Apache Beam</a>
        
      </nav>


      <div class="wy-nav-content">
        
        <div class="rst-content">
        
          















<div role="navigation" aria-label="breadcrumbs navigation">

  <ul class="wy-breadcrumbs">
    
      <li><a href="index.html">Docs</a> &raquo;</li>
        
          <li><a href="apache_beam.runners.html">apache_beam.runners package</a> &raquo;</li>
        
          <li><a href="apache_beam.runners.interactive.html">apache_beam.runners.interactive package</a> &raquo;</li>
        
      <li>apache_beam.runners.interactive.pipeline_instrument module</li>
    
    
      <li class="wy-breadcrumbs-aside">
        
            
            <a href="_sources/apache_beam.runners.interactive.pipeline_instrument.rst.txt" rel="nofollow"> View page source</a>
          
        
      </li>
    
  </ul>

  
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
  <div class="section" id="module-apache_beam.runners.interactive.pipeline_instrument">
<span id="apache-beam-runners-interactive-pipeline-instrument-module"></span><h1>apache_beam.runners.interactive.pipeline_instrument module<a class="headerlink" href="#module-apache_beam.runners.interactive.pipeline_instrument" title="Permalink to this headline">¶</a></h1>
<p>Module to instrument interactivity to the given pipeline.</p>
<p>For internal use only; no backwards-compatibility guarantees.
This module accesses current interactive environment and analyzes given pipeline
to transform original pipeline into a one-shot pipeline with interactivity.</p>
<dl class="class">
<dt id="apache_beam.runners.interactive.pipeline_instrument.Cacheable">
<em class="property">class </em><code class="descclassname">apache_beam.runners.interactive.pipeline_instrument.</code><code class="descname">Cacheable</code><span class="sig-paren">(</span><em>pcoll_id</em>, <em>var</em>, <em>version</em>, <em>pcoll</em>, <em>producer_version</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#Cacheable"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.Cacheable" title="Permalink to this definition">¶</a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<dl class="method">
<dt id="apache_beam.runners.interactive.pipeline_instrument.Cacheable.to_key">
<code class="descname">to_key</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#Cacheable.to_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.Cacheable.to_key" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>

</dd></dl>

<dl class="class">
<dt id="apache_beam.runners.interactive.pipeline_instrument.CacheKey">
<em class="property">class </em><code class="descclassname">apache_beam.runners.interactive.pipeline_instrument.</code><code class="descname">CacheKey</code><span class="sig-paren">(</span><em>var</em>, <em>version</em>, <em>producer_version</em>, <em>pipeline_id</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#CacheKey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.CacheKey" title="Permalink to this definition">¶</a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<dl class="staticmethod">
<dt id="apache_beam.runners.interactive.pipeline_instrument.CacheKey.from_str">
<em class="property">static </em><code class="descname">from_str</code><span class="sig-paren">(</span><em>r</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#CacheKey.from_str"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.CacheKey.from_str" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>

</dd></dl>

<dl class="class">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument">
<em class="property">class </em><code class="descclassname">apache_beam.runners.interactive.pipeline_instrument.</code><code class="descname">PipelineInstrument</code><span class="sig-paren">(</span><em>pipeline</em>, <em>options=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#PipelineInstrument"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument" title="Permalink to this definition">¶</a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<p>A pipeline instrument for pipeline to be executed by interactive runner.</p>
<p>This module should never depend on underlying runner that interactive runner
delegates. It instruments the original instance of pipeline directly by
appending or replacing transforms with help of cache. It provides
interfaces to recover states of original pipeline. It’s the interactive
runner’s responsibility to coordinate supported underlying runners to run
the pipeline instrumented and recover the original pipeline states if needed.</p>
<dl class="method">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.instrumented_pipeline_proto">
<code class="descname">instrumented_pipeline_proto</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#PipelineInstrument.instrumented_pipeline_proto"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.instrumented_pipeline_proto" title="Permalink to this definition">¶</a></dt>
<dd><p>Always returns a new instance of portable instrumented proto.</p>
</dd></dl>

<dl class="method">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.prune_subgraph_for">
<code class="descname">prune_subgraph_for</code><span class="sig-paren">(</span><em>pipeline</em>, <em>required_transform_ids</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#PipelineInstrument.prune_subgraph_for"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.prune_subgraph_for" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>

<dl class="method">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.background_caching_pipeline_proto">
<code class="descname">background_caching_pipeline_proto</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#PipelineInstrument.background_caching_pipeline_proto"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.background_caching_pipeline_proto" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the background caching pipeline.</p>
<p>This method creates a background caching pipeline by: adding writes to cache
from each unbounded source (done in the instrument method), and cutting out
all components (transform, PCollections, coders, windowing strategies) that
are not the unbounded sources or writes to cache (or subtransforms thereof).</p>
</dd></dl>

<dl class="attribute">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.has_unbounded_sources">
<code class="descname">has_unbounded_sources</code><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.has_unbounded_sources" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns whether the pipeline has any recordable sources.</p>
</dd></dl>

<dl class="attribute">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.cacheables">
<code class="descname">cacheables</code><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.cacheables" title="Permalink to this definition">¶</a></dt>
<dd><p>Finds cacheable PCollections from the pipeline.</p>
<p>The function only treats the result as cacheables since there is no
guarantee whether PCollections that need to be cached have been cached or
not. A PCollection needs to be cached when it’s bound to a user defined
variable in the source code. Otherwise, the PCollection is not reusable
nor introspectable which nullifies the need of cache.</p>
</dd></dl>

<dl class="attribute">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.pcolls_to_pcoll_id">
<code class="descname">pcolls_to_pcoll_id</code><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.pcolls_to_pcoll_id" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns a dict mapping str(PCollection)s to IDs.</p>
</dd></dl>

<dl class="attribute">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.original_pipeline_proto">
<code class="descname">original_pipeline_proto</code><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.original_pipeline_proto" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the portable proto representation of the pipeline before
instrumentation.</p>
</dd></dl>

<dl class="attribute">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.original_pipeline">
<code class="descname">original_pipeline</code><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.original_pipeline" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns a snapshot of the pipeline before instrumentation.</p>
</dd></dl>

<dl class="attribute">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.user_pipeline">
<code class="descname">user_pipeline</code><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.user_pipeline" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns a reference to the pipeline instance defined by the user. If a
pipeline has no cacheable PCollection and the user pipeline cannot be
found, return None indicating there is nothing to be cached in the user
pipeline.</p>
<p>The pipeline given for instrumenting and mutated in this class is not
necessarily the pipeline instance defined by the user. From the watched
scopes, this class figures out what the user pipeline instance is.
This metadata can be used for tracking pipeline results.</p>
</dd></dl>

<dl class="attribute">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.runner_pcoll_to_user_pcoll">
<code class="descname">runner_pcoll_to_user_pcoll</code><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.runner_pcoll_to_user_pcoll" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns cacheable PCollections correlated from instances in the runner
pipeline to instances in the user pipeline.</p>
</dd></dl>

<dl class="method">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.instrument">
<code class="descname">instrument</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#PipelineInstrument.instrument"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.instrument" title="Permalink to this definition">¶</a></dt>
<dd><p>Instruments original pipeline with cache.</p>
<p>For cacheable output PCollection, if cache for the key doesn’t exist, do
_write_cache(); for cacheable input PCollection, if cache for the key
exists, do _read_cache(). No instrument in any other situation.</p>
<dl class="docutils">
<dt>Modifies:</dt>
<dd>self._pipeline</dd>
</dl>
</dd></dl>

<dl class="method">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.preprocess">
<code class="descname">preprocess</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#PipelineInstrument.preprocess"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.preprocess" title="Permalink to this definition">¶</a></dt>
<dd><p>Pre-processes the pipeline.</p>
<p>Since the pipeline instance in the class might not be the same instance
defined in the user code, the pre-process will figure out the relationship
of cacheable PCollections between these 2 instances by replacing ‘pcoll’
fields in the cacheable dictionary with ones from the running instance.</p>
</dd></dl>

<dl class="method">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.cache_key">
<code class="descname">cache_key</code><span class="sig-paren">(</span><em>pcoll</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#PipelineInstrument.cache_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.cache_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Gets the identifier of a cacheable PCollection in cache.</p>
<p>If the pcoll is not a cacheable, return ‘’.
The key is what the pcoll would use as identifier if it’s materialized in
cache. It doesn’t mean that there would definitely be such cache already.
Also, the pcoll can come from the original user defined pipeline object or
an equivalent pcoll from a transformed copy of the original pipeline.</p>
<p>‘pcoll_id’ of cacheable is not stable for cache_key, thus not included in
cache key. A combination of ‘var’, ‘version’ and ‘producer_version’ is
sufficient to identify a cached PCollection.</p>
</dd></dl>

<dl class="method">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.cacheable_var_by_pcoll_id">
<code class="descname">cacheable_var_by_pcoll_id</code><span class="sig-paren">(</span><em>pcoll_id</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#PipelineInstrument.cacheable_var_by_pcoll_id"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.cacheable_var_by_pcoll_id" title="Permalink to this definition">¶</a></dt>
<dd><p>Retrieves the variable name of a PCollection.</p>
<p>In source code, PCollection variables are defined in the user pipeline. When
it’s converted to the runner api representation, each PCollection referenced
in the user pipeline is assigned a unique-within-pipeline pcoll_id. Given
such pcoll_id, retrieves the str variable name defined in user pipeline for
that referenced PCollection. If the PCollection is not watched, return None.</p>
</dd></dl>

</dd></dl>

<dl class="function">
<dt id="apache_beam.runners.interactive.pipeline_instrument.build_pipeline_instrument">
<code class="descclassname">apache_beam.runners.interactive.pipeline_instrument.</code><code class="descname">build_pipeline_instrument</code><span class="sig-paren">(</span><em>pipeline</em>, <em>options=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#build_pipeline_instrument"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.build_pipeline_instrument" title="Permalink to this definition">¶</a></dt>
<dd><p>Creates PipelineInstrument for a pipeline and its options with cache.</p>
<p>Throughout the process, the returned PipelineInstrument snapshots the given
pipeline and then mutates the pipeline. It’s invoked by interactive components
such as the InteractiveRunner and the given pipeline should be implicitly
created runner pipelines instead of pipeline instances defined by the user.</p>
<p>This is the shorthand for doing 3 steps: 1) compute once for metadata of the
given runner pipeline and everything watched from user pipelines; 2) associate
info between the runner pipeline and its corresponding user pipeline,
eliminate data from other user pipelines if there are any; 3) mutate the
runner pipeline to apply interactivity.</p>
</dd></dl>

<dl class="function">
<dt id="apache_beam.runners.interactive.pipeline_instrument.user_pipeline">
<code class="descclassname">apache_beam.runners.interactive.pipeline_instrument.</code><code class="descname">user_pipeline</code><span class="sig-paren">(</span><em>pipeline</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#user_pipeline"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.user_pipeline" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>

<dl class="function">
<dt id="apache_beam.runners.interactive.pipeline_instrument.cacheables">
<code class="descclassname">apache_beam.runners.interactive.pipeline_instrument.</code><code class="descname">cacheables</code><span class="sig-paren">(</span><em>pcolls_to_pcoll_id</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#cacheables"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.cacheables" title="Permalink to this definition">¶</a></dt>
<dd><p>Finds PCollections that need to be cached for analyzed PCollections.</p>
<p>The function only treats the result as cacheables since there is no guarantee
whether PCollections that need to be cached have been cached or not. A
PCollection needs to be cached when it’s bound to a user defined variable in
the source code. Otherwise, the PCollection is not reusable nor introspectable
which nullifies the need of cache. There might be multiple pipelines defined
and watched, this will only return for PCollections with pcolls_to_pcoll_id
analyzed. The check is not strict because pcoll_id is not unique across
multiple pipelines. Additional check needs to be done during instrument.</p>
</dd></dl>

<dl class="function">
<dt id="apache_beam.runners.interactive.pipeline_instrument.cacheable_key">
<code class="descclassname">apache_beam.runners.interactive.pipeline_instrument.</code><code class="descname">cacheable_key</code><span class="sig-paren">(</span><em>pcoll</em>, <em>pcolls_to_pcoll_id</em>, <em>pcoll_version_map=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#cacheable_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.cacheable_key" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>

<dl class="function">
<dt id="apache_beam.runners.interactive.pipeline_instrument.has_unbounded_sources">
<code class="descclassname">apache_beam.runners.interactive.pipeline_instrument.</code><code class="descname">has_unbounded_sources</code><span class="sig-paren">(</span><em>pipeline</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#has_unbounded_sources"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.has_unbounded_sources" title="Permalink to this definition">¶</a></dt>
<dd><p>Checks if a given pipeline has recordable sources.</p>
</dd></dl>

<dl class="function">
<dt id="apache_beam.runners.interactive.pipeline_instrument.unbounded_sources">
<code class="descclassname">apache_beam.runners.interactive.pipeline_instrument.</code><code class="descname">unbounded_sources</code><span class="sig-paren">(</span><em>pipeline</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#unbounded_sources"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.unbounded_sources" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns a pipeline’s recordable sources.</p>
</dd></dl>

<dl class="function">
<dt id="apache_beam.runners.interactive.pipeline_instrument.pcolls_to_pcoll_id">
<code class="descclassname">apache_beam.runners.interactive.pipeline_instrument.</code><code class="descname">pcolls_to_pcoll_id</code><span class="sig-paren">(</span><em>pipeline</em>, <em>original_context</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#pcolls_to_pcoll_id"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.pcolls_to_pcoll_id" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns a dict mapping PCollections string to PCollection IDs.</p>
<p>Using a PipelineVisitor to iterate over every node in the pipeline,
records the mapping from PCollections to PCollections IDs. This mapping
will be used to query cached PCollections.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">(dict from str to str) a dict mapping str(pcoll) to pcoll_id.</td>
</tr>
</tbody>
</table>
</dd></dl>

<dl class="function">
<dt id="apache_beam.runners.interactive.pipeline_instrument.watch_sources">
<code class="descclassname">apache_beam.runners.interactive.pipeline_instrument.</code><code class="descname">watch_sources</code><span class="sig-paren">(</span><em>pipeline</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/runners/interactive/pipeline_instrument.html#watch_sources"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.watch_sources" title="Permalink to this definition">¶</a></dt>
<dd><p>Watches the unbounded sources in the pipeline.</p>
<p>Sources can output to a PCollection without a user variable reference. In
this case the source is not cached. We still want to cache the data so we
synthetically create a variable to the intermediate PCollection.</p>
</dd></dl>

</div>


           </div>
           
          </div>
          <footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="apache_beam.runners.interactive.recording_manager.html" class="btn btn-neutral float-right" title="apache_beam.runners.interactive.recording_manager module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
      
      
        <a href="apache_beam.runners.interactive.pipeline_fragment.html" class="btn btn-neutral float-left" title="apache_beam.runners.interactive.pipeline_fragment module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <p>
        &copy; Copyright 

    </p>
  </div>
  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 

</footer>

        </div>
      </div>

    </section>

  </div>
  


  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script>

  
  
    
   

</body>
</html>