blob: b5cedb7b44967e534c57685404fe5b9def282806 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.18) on Wed Mar 01 02:01:42 GMT 2023 -->
<title>TopologyBuilder (Heron Java API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2023-03-01">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="TopologyBuilder (Heron Java API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.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" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&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><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.heron.api.topology</a></div>
<h2 title="Class TopologyBuilder" class="title">Class TopologyBuilder</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.heron.api.topology.TopologyBuilder</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="../../integration_test/core/TestTopologyBuilder.html" title="class in org.apache.heron.integration_test.core">TestTopologyBuilder</a></code>, <code><a href="../../integration_topology_test/core/TopologyTestTopologyBuilder.html" title="class in org.apache.heron.integration_topology_test.core">TopologyTestTopologyBuilder</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">TopologyBuilder</span>
extends java.lang.Object</pre>
<div class="block">TopologyBuilder exposes the Java API for specifying a topology for Heron
to execute. Topologies are Thrift structures in the end, but since the Thrift API
is so verbose, TopologyBuilder greatly eases the process of creating topologies.
The template for creating and submitting a topology looks something like:
<p>
<pre>
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("1", new TestWordSpout(true), 5);
builder.setSpout("2", new TestWordSpout(true), 3);
builder.setBolt("3", new TestWordCounter(), 3)
.fieldsGrouping("1", new Fields("word"))
.fieldsGrouping("2", new Fields("word"));
builder.setBolt("4", new TestGlobalCount())
.globalGrouping("1");
Map conf = new HashMap();
conf.put(Config.TOPOLOGY_WORKERS, 4);
HeronSubmitter.submitTopology("mytopology", conf, builder.createTopology());
</pre>
<p>
Running the exact same topology in simulator (in process), and configuring it to log all tuples
emitted, looks like the following. Note that it lets the topology run for 10 seconds
before shutting down the local cluster.
<p>
<pre>
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("1", new TestWordSpout(true), 5);
builder.setSpout("2", new TestWordSpout(true), 3);
builder.setBolt("3", new TestWordCounter(), 3)
.fieldsGrouping("1", new Fields("word"))
.fieldsGrouping("2", new Fields("word"));
builder.setBolt("4", new TestGlobalCount())
.globalGrouping("1");
Map conf = new HashMap();
conf.put(Config.TOPOLOGY_WORKERS, 4);
conf.put(Config.TOPOLOGY_DEBUG, true);
LocalCluster cluster = new LocalCluster();
cluster.submitTopology("mytopology", conf, builder.createTopology());
Utils.sleep(10000);
cluster.shutdown();
</pre>
<p>
<p>The pattern for TopologyBuilder is to map component ids to components using the setSpout
and setBolt methods. Those methods return objects that are then used to declare
the inputs for that component.</p></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">TopologyBuilder</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<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="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="../HeronTopology.html" title="class in org.apache.heron.api">HeronTopology</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createTopology()">createTopology</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setBolt(java.lang.String,org.apache.heron.api.bolt.IBasicBolt)">setBolt</a></span>&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IBasicBolt.html" title="interface in org.apache.heron.api.bolt">IBasicBolt</a>&nbsp;bolt)</code></th>
<td class="colLast">
<div class="block">Define a new bolt in this topology.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setBolt(java.lang.String,org.apache.heron.api.bolt.IBasicBolt,java.lang.Number)">setBolt</a></span>&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IBasicBolt.html" title="interface in org.apache.heron.api.bolt">IBasicBolt</a>&nbsp;bolt,
java.lang.Number&nbsp;parallelismHint)</code></th>
<td class="colLast">
<div class="block">Define a new bolt in this topology.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setBolt(java.lang.String,org.apache.heron.api.bolt.IRichBolt)">setBolt</a></span>&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IRichBolt.html" title="interface in org.apache.heron.api.bolt">IRichBolt</a>&nbsp;bolt)</code></th>
<td class="colLast">
<div class="block">Define a new bolt in this topology with parallelism of just one thread.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setBolt(java.lang.String,org.apache.heron.api.bolt.IRichBolt,java.lang.Number)">setBolt</a></span>&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IRichBolt.html" title="interface in org.apache.heron.api.bolt">IRichBolt</a>&nbsp;bolt,
java.lang.Number&nbsp;parallelismHint)</code></th>
<td class="colLast">
<div class="block">Define a new bolt in this topology with the specified amount of parallelism.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>&lt;K extends java.io.Serializable,&#8203;V extends java.io.Serializable&gt;<br><a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setBolt(java.lang.String,org.apache.heron.api.bolt.IStatefulWindowedBolt)">setBolt</a></span>&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IStatefulWindowedBolt.html" title="interface in org.apache.heron.api.bolt">IStatefulWindowedBolt</a>&lt;K,&#8203;V&gt;&nbsp;bolt)</code></th>
<td class="colLast">
<div class="block">Define a new bolt in this topology.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>&lt;K extends java.io.Serializable,&#8203;V extends java.io.Serializable&gt;<br><a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setBolt(java.lang.String,org.apache.heron.api.bolt.IStatefulWindowedBolt,java.lang.Number)">setBolt</a></span>&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IStatefulWindowedBolt.html" title="interface in org.apache.heron.api.bolt">IStatefulWindowedBolt</a>&lt;K,&#8203;V&gt;&nbsp;bolt,
java.lang.Number&nbsp;parallelismHint)</code></th>
<td class="colLast">
<div class="block">Define a new bolt in this topology.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setBolt(java.lang.String,org.apache.heron.api.bolt.IWindowedBolt)">setBolt</a></span>&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IWindowedBolt.html" title="interface in org.apache.heron.api.bolt">IWindowedBolt</a>&nbsp;bolt)</code></th>
<td class="colLast">
<div class="block">Define a new bolt in this topology.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setBolt(java.lang.String,org.apache.heron.api.bolt.IWindowedBolt,java.lang.Number)">setBolt</a></span>&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IWindowedBolt.html" title="interface in org.apache.heron.api.bolt">IWindowedBolt</a>&nbsp;bolt,
java.lang.Number&nbsp;parallelismHint)</code></th>
<td class="colLast">
<div class="block">Define a new bolt in this topology.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="SpoutDeclarer.html" title="class in org.apache.heron.api.topology">SpoutDeclarer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setSpout(java.lang.String,org.apache.heron.api.spout.IRichSpout)">setSpout</a></span>&#8203;(java.lang.String&nbsp;id,
<a href="../spout/IRichSpout.html" title="interface in org.apache.heron.api.spout">IRichSpout</a>&nbsp;spout)</code></th>
<td class="colLast">
<div class="block">Define a new spout in this topology.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="SpoutDeclarer.html" title="class in org.apache.heron.api.topology">SpoutDeclarer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setSpout(java.lang.String,org.apache.heron.api.spout.IRichSpout,java.lang.Number)">setSpout</a></span>&#8203;(java.lang.String&nbsp;id,
<a href="../spout/IRichSpout.html" title="interface in org.apache.heron.api.spout">IRichSpout</a>&nbsp;spout,
java.lang.Number&nbsp;parallelismHint)</code></th>
<td class="colLast">
<div class="block">Define a new spout in this topology with the specified parallelism.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>TopologyBuilder</h4>
<pre>public&nbsp;TopologyBuilder()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="createTopology()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createTopology</h4>
<pre class="methodSignature">public&nbsp;<a href="../HeronTopology.html" title="class in org.apache.heron.api">HeronTopology</a>&nbsp;createTopology()</pre>
</li>
</ul>
<a id="setBolt(java.lang.String,org.apache.heron.api.bolt.IRichBolt)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setBolt</h4>
<pre class="methodSignature">public&nbsp;<a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a>&nbsp;setBolt&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IRichBolt.html" title="interface in org.apache.heron.api.bolt">IRichBolt</a>&nbsp;bolt)</pre>
<div class="block">Define a new bolt in this topology with parallelism of just one thread.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - the id of this component. This id is referenced by other components that want to consume this bolt's outputs.</dd>
<dd><code>bolt</code> - the bolt</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>use the returned object to declare the inputs to this component</dd>
</dl>
</li>
</ul>
<a id="setBolt(java.lang.String,org.apache.heron.api.bolt.IRichBolt,java.lang.Number)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setBolt</h4>
<pre class="methodSignature">public&nbsp;<a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a>&nbsp;setBolt&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IRichBolt.html" title="interface in org.apache.heron.api.bolt">IRichBolt</a>&nbsp;bolt,
java.lang.Number&nbsp;parallelismHint)</pre>
<div class="block">Define a new bolt in this topology with the specified amount of parallelism.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - the id of this component. This id is referenced by other components that want to consume this bolt's outputs.</dd>
<dd><code>bolt</code> - the bolt</dd>
<dd><code>parallelismHint</code> - the number of tasks that should be assigned to execute this bolt. Each task will run on a thread in a process somewhere around the cluster.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>use the returned object to declare the inputs to this component</dd>
</dl>
</li>
</ul>
<a id="setBolt(java.lang.String,org.apache.heron.api.bolt.IBasicBolt)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setBolt</h4>
<pre class="methodSignature">public&nbsp;<a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a>&nbsp;setBolt&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IBasicBolt.html" title="interface in org.apache.heron.api.bolt">IBasicBolt</a>&nbsp;bolt)</pre>
<div class="block">Define a new bolt in this topology. This defines a basic bolt, which is a
simpler to use but more restricted kind of bolt. Basic bolts are intended
for non-aggregation processing and automate the anchoring/acking process to
achieve proper reliability in the topology.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - the id of this component. This id is referenced by other components that want to consume this bolt's outputs.</dd>
<dd><code>bolt</code> - the basic bolt</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>use the returned object to declare the inputs to this component</dd>
</dl>
</li>
</ul>
<a id="setBolt(java.lang.String,org.apache.heron.api.bolt.IBasicBolt,java.lang.Number)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setBolt</h4>
<pre class="methodSignature">public&nbsp;<a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a>&nbsp;setBolt&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IBasicBolt.html" title="interface in org.apache.heron.api.bolt">IBasicBolt</a>&nbsp;bolt,
java.lang.Number&nbsp;parallelismHint)</pre>
<div class="block">Define a new bolt in this topology. This defines a basic bolt, which is a
simpler to use but more restricted kind of bolt. Basic bolts are intended
for non-aggregation processing and automate the anchoring/acking process to
achieve proper reliability in the topology.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - the id of this component. This id is referenced by other components that want to consume this bolt's outputs.</dd>
<dd><code>bolt</code> - the basic bolt</dd>
<dd><code>parallelismHint</code> - the number of tasks that should be assigned to execute this bolt. Each task will run on a thread in a process somwehere around the cluster.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>use the returned object to declare the inputs to this component</dd>
</dl>
</li>
</ul>
<a id="setBolt(java.lang.String,org.apache.heron.api.bolt.IWindowedBolt)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setBolt</h4>
<pre class="methodSignature">public&nbsp;<a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a>&nbsp;setBolt&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IWindowedBolt.html" title="interface in org.apache.heron.api.bolt">IWindowedBolt</a>&nbsp;bolt)
throws java.lang.IllegalArgumentException</pre>
<div class="block">Define a new bolt in this topology. This defines a windowed bolt, intended
for windowing operations. The <a href="../bolt/IWindowedBolt.html#execute(org.apache.heron.api.windowing.TupleWindow)"><code>IWindowedBolt.execute(TupleWindow)</code></a> method
is triggered for each window interval with the list of current events in the window.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - the id of this component. This id is referenced by other components that want to consume this bolt's outputs.</dd>
<dd><code>bolt</code> - the windowed bolt</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>use the returned object to declare the inputs to this component</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - if <code>parallelism_hint</code> is not positive</dd>
</dl>
</li>
</ul>
<a id="setBolt(java.lang.String,org.apache.heron.api.bolt.IWindowedBolt,java.lang.Number)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setBolt</h4>
<pre class="methodSignature">public&nbsp;<a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a>&nbsp;setBolt&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IWindowedBolt.html" title="interface in org.apache.heron.api.bolt">IWindowedBolt</a>&nbsp;bolt,
java.lang.Number&nbsp;parallelismHint)
throws java.lang.IllegalArgumentException</pre>
<div class="block">Define a new bolt in this topology. This defines a windowed bolt, intended
for windowing operations. The <a href="../bolt/IWindowedBolt.html#execute(org.apache.heron.api.windowing.TupleWindow)"><code>IWindowedBolt.execute(TupleWindow)</code></a> method
is triggered for each window interval with the list of current events in the window.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - the id of this component. This id is referenced by other components that want to
consume this bolt's outputs.</dd>
<dd><code>bolt</code> - the windowed bolt</dd>
<dd><code>parallelismHint</code> - the number of tasks that should be assigned to execute this bolt.
Each task will run on a thread in a process somwehere around the cluster.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>use the returned object to declare the inputs to this component</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - if <code>parallelismHint</code> is not positive</dd>
</dl>
</li>
</ul>
<a id="setBolt(java.lang.String,org.apache.heron.api.bolt.IStatefulWindowedBolt)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setBolt</h4>
<pre class="methodSignature">public&nbsp;&lt;K extends java.io.Serializable,&#8203;V extends java.io.Serializable&gt;&nbsp;<a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a>&nbsp;setBolt&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IStatefulWindowedBolt.html" title="interface in org.apache.heron.api.bolt">IStatefulWindowedBolt</a>&lt;K,&#8203;V&gt;&nbsp;bolt)
throws java.lang.IllegalArgumentException</pre>
<div class="block">Define a new bolt in this topology. This defines a stateful windowed bolt, intended for stateful
windowing operations. The <a href="../bolt/IWindowedBolt.html#execute(org.apache.heron.api.windowing.TupleWindow)"><code>IWindowedBolt.execute(TupleWindow)</code></a> method is triggered
for each window interval with the list of current events in the window. During initialization of
this bolt (potentially after failure) <a href="IStatefulComponent.html#initState(org.apache.heron.api.state.State)"><code>IStatefulComponent.initState(State)</code></a>
is invoked with its previously saved state.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>K</code> - Type of key for <a href="../state/HashMapState.html" title="class in org.apache.heron.api.state"><code>HashMapState</code></a></dd>
<dd><code>V</code> - Type of value for <a href="../state/HashMapState.html" title="class in org.apache.heron.api.state"><code>HashMapState</code></a></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - the id of this component.
This id is referenced by other components that want to consume this bolt's outputs.</dd>
<dd><code>bolt</code> - the stateful windowed bolt</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>use the returned object to declare the inputs to this component</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - <code>parallelism_hint</code> is not positive</dd>
</dl>
</li>
</ul>
<a id="setBolt(java.lang.String,org.apache.heron.api.bolt.IStatefulWindowedBolt,java.lang.Number)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setBolt</h4>
<pre class="methodSignature">public&nbsp;&lt;K extends java.io.Serializable,&#8203;V extends java.io.Serializable&gt;&nbsp;<a href="BoltDeclarer.html" title="class in org.apache.heron.api.topology">BoltDeclarer</a>&nbsp;setBolt&#8203;(java.lang.String&nbsp;id,
<a href="../bolt/IStatefulWindowedBolt.html" title="interface in org.apache.heron.api.bolt">IStatefulWindowedBolt</a>&lt;K,&#8203;V&gt;&nbsp;bolt,
java.lang.Number&nbsp;parallelismHint)
throws java.lang.IllegalArgumentException</pre>
<div class="block">Define a new bolt in this topology. This defines a stateful windowed bolt, intended for stateful
windowing operations. The <a href="../bolt/IWindowedBolt.html#execute(org.apache.heron.api.windowing.TupleWindow)"><code>IWindowedBolt.execute(TupleWindow)</code></a> method is triggered
for each window interval with the list of current events in the window. During initialization of
this bolt (potentially after failure) <a href="IStatefulComponent.html#initState(org.apache.heron.api.state.State)"><code>IStatefulComponent.initState(State)</code></a>
is invoked with its previously saved state.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>K</code> - Type of key for <a href="../state/HashMapState.html" title="class in org.apache.heron.api.state"><code>HashMapState</code></a></dd>
<dd><code>V</code> - Type of value for <a href="../state/HashMapState.html" title="class in org.apache.heron.api.state"><code>HashMapState</code></a></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - the id of this component.
This id is referenced by other components that want to consume this bolt's outputs.</dd>
<dd><code>bolt</code> - the stateful windowed bolt</dd>
<dd><code>parallelismHint</code> - the number of tasks that should be assigned to execute this bolt.
Each task will run on a thread in a process somwehere around the cluster.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>use the returned object to declare the inputs to this component</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - <code>parallelism_hint</code> is not positive</dd>
</dl>
</li>
</ul>
<a id="setSpout(java.lang.String,org.apache.heron.api.spout.IRichSpout)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSpout</h4>
<pre class="methodSignature">public&nbsp;<a href="SpoutDeclarer.html" title="class in org.apache.heron.api.topology">SpoutDeclarer</a>&nbsp;setSpout&#8203;(java.lang.String&nbsp;id,
<a href="../spout/IRichSpout.html" title="interface in org.apache.heron.api.spout">IRichSpout</a>&nbsp;spout)</pre>
<div class="block">Define a new spout in this topology.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - the id of this component. This id is referenced by other components that want to consume this spout's outputs.</dd>
<dd><code>spout</code> - the spout</dd>
</dl>
</li>
</ul>
<a id="setSpout(java.lang.String,org.apache.heron.api.spout.IRichSpout,java.lang.Number)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setSpout</h4>
<pre class="methodSignature">public&nbsp;<a href="SpoutDeclarer.html" title="class in org.apache.heron.api.topology">SpoutDeclarer</a>&nbsp;setSpout&#8203;(java.lang.String&nbsp;id,
<a href="../spout/IRichSpout.html" title="interface in org.apache.heron.api.spout">IRichSpout</a>&nbsp;spout,
java.lang.Number&nbsp;parallelismHint)</pre>
<div class="block">Define a new spout in this topology with the specified parallelism. If the spout declares
itself as non-distributed, the parallelismHint will be ignored and only one task
will be allocated to this component.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - the id of this component. This id is referenced by other components that want to consume this spout's outputs.</dd>
<dd><code>parallelismHint</code> - the number of tasks that should be assigned to execute this spout. Each task will run on a thread in a process somwehere around the cluster.</dd>
<dd><code>spout</code> - the spout</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.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" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&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><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>