<!DOCTYPE html >
<html>
        <head>
          <title>partitioner - org.apache.gearpump.streaming.dsl.partitioner</title>
          <meta name="description" content="partitioner - org.apache.gearpump.streaming.dsl.partitioner" />
          <meta name="keywords" content="partitioner org.apache.gearpump.streaming.dsl.partitioner" />
          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
          
      <link href="../../../../../../lib/template.css" media="screen" type="text/css" rel="stylesheet" />
      <link href="../../../../../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
      <script type="text/javascript" src="../../../../../../lib/jquery.js" id="jquery-js"></script>
      <script type="text/javascript" src="../../../../../../lib/jquery-ui.js"></script>
      <script type="text/javascript" src="../../../../../../lib/template.js"></script>
      <script type="text/javascript" src="../../../../../../lib/tools.tooltip.js"></script>
      
      <script type="text/javascript">
         if(top === self) {
            var url = '../../../../../../index.html';
            var hash = 'org.apache.gearpump.streaming.dsl.partitioner.package';
            var anchor = window.location.hash;
            var anchor_opt = '';
            if (anchor.length >= 1)
              anchor_opt = '@' + anchor.substring(1);
            window.location.href = url + '#' + hash + anchor_opt;
         }
   	  </script>
    
        </head>
        <body class="value">
      <div id="definition">
        <img alt="Package" src="../../../../../../lib/package_big.png" />
        <p id="owner"><a href="../../../../../package.html" class="extype" name="org">org</a>.<a href="../../../../package.html" class="extype" name="org.apache">apache</a>.<a href="../../../package.html" class="extype" name="org.apache.gearpump">gearpump</a>.<a href="../../package.html" class="extype" name="org.apache.gearpump.streaming">streaming</a>.<a href="../package.html" class="extype" name="org.apache.gearpump.streaming.dsl">dsl</a></p>
        <h1>partitioner</h1><span class="permalink">
      <a href="../../../../../../index.html#org.apache.gearpump.streaming.dsl.partitioner.package" title="Permalink" target="_top">
        <img src="../../../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      </div>

      <h4 id="signature" class="signature">
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">package</span>
      </span>
      <span class="symbol">
        <span class="name">partitioner</span>
      </span>
      </h4>
      
          <div id="comment" class="fullcommenttop"></div>
        

      <div id="mbrsel">
        <div id="textfilter"><span class="pre"></span><span class="input"><input id="mbrsel-input" type="text" accesskey="/" /></span><span class="post"></span></div>
        
        
        <div id="visbl">
            <span class="filtertype">Visibility</span>
            <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
          </div>
      </div>

      <div id="template">
        <div id="allMembers">
        

        <div id="types" class="types members">
              <h3>Type Members</h3>
              <ol><li name="org.apache.gearpump.streaming.dsl.partitioner.GroupByPartitioner" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="GroupByPartitioner[T,GROUP]extendsUnicastPartitioner"></a>
      <a id="GroupByPartitioner[T,GROUP]:GroupByPartitioner[T,GROUP]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a href="GroupByPartitioner.html"><span class="name">GroupByPartitioner</span></a><span class="tparams">[<span name="T">T</span>, <span name="GROUP">GROUP</span>]</span><span class="result"> extends <a href="../../partitioner/UnicastPartitioner.html" class="extype" name="org.apache.gearpump.streaming.partitioner.UnicastPartitioner">UnicastPartitioner</a></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../../../index.html#org.apache.gearpump.streaming.dsl.partitioner.package@GroupByPartitioner[T,GROUP]extendsUnicastPartitioner" title="Permalink" target="_top">
        <img src="../../../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt">Partition messages by applying group by function first.</p><div class="fullcomment"><div class="comment cmt"><p>Partition messages by applying group by function first.</p><p>For example:</p><pre><span class="kw">case</span> <span class="kw">class</span> People(name: <span class="std">String</span>, gender: <span class="std">String</span>)

<span class="kw">object</span> Test{

  <span class="kw">val</span> groupBy: (People <span class="kw">=&gt;</span> <span class="std">String</span>) = people <span class="kw">=&gt;</span> people.gender
  <span class="kw">val</span> partitioner = GroupByPartitioner(groupBy)
}</pre></div></div>
    </li></ol>
            </div>

        

        

        

        
        </div>

        <div id="inheritedMembers">
        
        
        </div>

        <div id="groupedMembers">
        <div class="group" name="Ungrouped">
              <h3>Ungrouped</h3>
              
            </div>
        </div>

      </div>

      <div id="tooltip"></div>

      <div id="footer">  </div>


    </body>
      </html>
