blob: f8e33a331177b21a2a3a7674eab69a4b79562aa1 [file] [log] [blame]
<!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>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="index" title="Index"
href="genindex.html"/>
<link rel="search" title="Search" href="search.html"/>
<link rel="top" title="Apache Beam documentation" href="index.html"/>
<link rel="up" title="apache_beam.runners.interactive package" href="apache_beam.runners.interactive.html"/>
<link rel="next" title="apache_beam.runners.internal package" href="apache_beam.runners.internal.html"/>
<link rel="prev" title="apache_beam.runners.interactive.pipeline_analyzer module" href="apache_beam.runners.interactive.pipeline_analyzer.html"/>
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<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.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.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" role="navigation" 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.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/2/library/functions.html#object" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><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="attribute">
<dt id="apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.has_unbounded_source">
<code class="descname">has_unbounded_source</code><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.PipelineInstrument.has_unbounded_source" title="Permalink to this definition"></a></dt>
<dd><p>Checks if a given pipeline has any source that is unbounded.</p>
<p>The function directly checks the source transform definition instead
of pvalues in the pipeline. Thus manually setting is_bounded field of
a PCollection or switching streaming mode will not affect this
function’s result. The result is always deterministic when the source
code of a pipeline is defined.</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 the cache desired PCollection has been cached or
not. A PCollection desires caching when it’s bound to a user defined
variable in source code. Otherwise, the PCollection is not reusale
nor introspectable which nullifying 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="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.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>
</dd></dl>
</dd></dl>
<dl class="function">
<dt id="apache_beam.runners.interactive.pipeline_instrument.pin">
<code class="descclassname">apache_beam.runners.interactive.pipeline_instrument.</code><code class="descname">pin</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#pin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.pin" title="Permalink to this definition"></a></dt>
<dd><p>Creates PipelineInstrument for a pipeline and its options with cache.</p>
</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 cache desired PCollections from the instrumented pipeline.</p>
<p>The function only treats the result as cacheables since whether the cache
desired PCollection has been cached depends on whether the pipeline has been
executed in current interactive environment. A PCollection desires caching
when it’s bound to a user defined variable in 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
return for PCollections from the ones 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_source">
<code class="descclassname">apache_beam.runners.interactive.pipeline_instrument.</code><code class="descname">has_unbounded_source</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_source"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.runners.interactive.pipeline_instrument.has_unbounded_source" title="Permalink to this definition"></a></dt>
<dd><p>Checks if a given pipeline has any source that is unbounded.</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>
</div>
</div>
<div class="articleComments">
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="apache_beam.runners.internal.html" class="btn btn-neutral float-right" title="apache_beam.runners.internal package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="apache_beam.runners.interactive.pipeline_analyzer.html" class="btn btn-neutral" title="apache_beam.runners.interactive.pipeline_analyzer 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/snide/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">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};
</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/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>