| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| |
| <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> |
| <link rel="icon" href="/favicon.ico" type="image/x-icon"> |
| |
| <title>Storm PMML Bolt</title> |
| |
| <!-- Bootstrap core CSS --> |
| <link href="/assets/css/bootstrap.min.css" rel="stylesheet"> |
| <!-- Bootstrap theme --> |
| <link href="/assets/css/bootstrap-theme.min.css" rel="stylesheet"> |
| |
| <!-- Custom styles for this template --> |
| <link href="/css/font-awesome.min.css" rel="stylesheet"> |
| <link href="/css/style.css" rel="stylesheet"> |
| <link href="/assets/css/owl.theme.css" rel="stylesheet"> |
| <link href="/assets/css/owl.carousel.css" rel="stylesheet"> |
| <script type="text/javascript" src="/assets/js/jquery.min.js"></script> |
| <script type="text/javascript" src="/assets/js/bootstrap.min.js"></script> |
| <script type="text/javascript" src="/assets/js/owl.carousel.min.js"></script> |
| <script type="text/javascript" src="/assets/js/storm.js"></script> |
| </head> |
| |
| |
| <body> |
| <header> |
| <div class="container-fluid"> |
| <div class="row"> |
| <div class="col-md-5"> |
| <a href="/index.html"><img src="/images/logo.png" class="logo"/></a> |
| </div> |
| <div class="col-md-5"> |
| |
| <h1>Version: 2.0.0</h1> |
| |
| </div> |
| <div class="col-md-2"> |
| <a href="/downloads.html" class="btn-std btn-block btn-download">Download</a> |
| </div> |
| </div> |
| </div> |
| </header> |
| <!--Header End--> |
| <!--Navigation Begin--> |
| <div class="navbar" role="banner"> |
| <div class="container-fluid"> |
| <div class="navbar-header"> |
| <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-navbar-collapse"> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| </div> |
| <nav class="collapse navbar-collapse bs-navbar-collapse" role="navigation"> |
| <ul class="nav navbar-nav"> |
| <li><a href="/index.html" id="home">Home</a></li> |
| <li><a href="/getting-help.html" id="getting-help">Getting Help</a></li> |
| <li><a href="/about/integrates.html" id="project-info">Project Information</a></li> |
| <li class="dropdown"> |
| <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="documentation">Documentation <b |
| class="caret"></b></a> |
| <ul class="dropdown-menu"> |
| |
| |
| <li><a href="/releases/2.6.2/index.html">2.6.2</a></li> |
| |
| |
| |
| <li><a href="/releases/2.6.1/index.html">2.6.1</a></li> |
| |
| |
| |
| <li><a href="/releases/2.6.0/index.html">2.6.0</a></li> |
| |
| |
| |
| <li><a href="/releases/2.5.0/index.html">2.5.0</a></li> |
| |
| |
| |
| <li><a href="/releases/2.4.0/index.html">2.4.0</a></li> |
| |
| |
| |
| <li><a href="/releases/2.3.0/index.html">2.3.0</a></li> |
| |
| |
| |
| <li><a href="/releases/2.2.1/index.html">2.2.1</a></li> |
| |
| |
| |
| <li><a href="/releases/2.2.0/index.html">2.2.0</a></li> |
| |
| |
| |
| <li><a href="/releases/2.1.1/index.html">2.1.1</a></li> |
| |
| |
| |
| <li><a href="/releases/2.1.0/index.html">2.1.0</a></li> |
| |
| |
| |
| <li><a href="/releases/2.0.0/index.html">2.0.0</a></li> |
| |
| |
| |
| <li><a href="/releases/1.2.4/index.html">1.2.4</a></li> |
| |
| |
| |
| <li><a href="/releases/1.2.3/index.html">1.2.3</a></li> |
| |
| |
| </ul> |
| </li> |
| <li><a href="/talksAndVideos.html">Talks and Slideshows</a></li> |
| <li class="dropdown"> |
| <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="contribute">Community <b |
| class="caret"></b></a> |
| <ul class="dropdown-menu"> |
| <li><a href="/contribute/Contributing-to-Storm.html">Contributing</a></li> |
| <li><a href="/contribute/People.html">People</a></li> |
| <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> |
| <li><a href="/Powered-By.html">PoweredBy</a></li> |
| </ul> |
| </li> |
| <li><a href="/2024/04/05/storm262-released.html" id="news">News</a></li> |
| </ul> |
| </nav> |
| </div> |
| </div> |
| |
| |
| |
| <div class="container-fluid"> |
| <h1 class="page-title">Storm PMML Bolt</h1> |
| <div class="row"> |
| <div class="col-md-12"> |
| <!-- Documentation --> |
| |
| <p class="post-meta"></p> |
| |
| <div class="documentation-content"><p>Storm integration to load PMML models and compute predictive scores for running tuples. The PMML model represents |
| the machine learning (predictive) model used to do prediction on raw input data. The model is typically loaded into a |
| runtime environment, which will score the raw data that comes in the tuples. </p> |
| |
| <h2 id="create-instance-of-pmml-bolt">Create Instance of PMML Bolt</h2> |
| |
| <p>To create an instance of the <code>PMMLPredictorBolt</code>, you must provide the <code>ModelOutputs</code>, and a <code>ModelRunner</code> using a |
| <code>ModelRunnerFactory</code>. The <code>ModelOutputs</code> represents the streams and output fields declared by the <code>PMMLPredictorBolt</code>. |
| The <code>ModelRunner</code> represents the runtime environment to execute the predictive scoring. It has only one method: </p> |
| <div class="highlight"><pre><code class="language-java" data-lang="java"> <span class="nc">Map</span><span class="o"><</span><span class="nc">String</span><span class="o">,</span> <span class="nc">List</span><span class="o"><</span><span class="nc">Object</span><span class="o">>></span> <span class="nf">scoredTuplePerStream</span><span class="o">(</span><span class="nc">Tuple</span> <span class="n">input</span><span class="o">);</span> |
| </code></pre></div> |
| <p>This method contains the logic to compute the scored tuples from the raw inputs tuple. It's up to the discretion of the |
| implementation to define which scored values are to be assigned to each stream. The keys of this map are the stream ids, |
| and the values the predicted scores. </p> |
| |
| <p>The <code>PmmlModelRunner</code> is an extension of <code>ModelRunner</code> that represents the typical steps involved |
| in predictive scoring. Hence, it allows for the <strong>extraction</strong> of raw inputs from the tuple, <strong>pre process</strong> the |
| raw inputs, and <strong>predict</strong> the scores from the preprocessed data.</p> |
| |
| <p>The <code>JPmmlModelRunner</code> is an implementation of <code>PmmlModelRunner</code> that uses <a href="https://github.com/jpmml/jpmml">JPMML</a> as |
| runtime environment. This implementation extracts the raw inputs from the tuple for all <code>active fields</code>, |
| and builds a tuple with the predicted scores for the <code>predicted fields</code> and <code>output fields</code>. |
| In this implementation all the declared streams will have the same scored tuple.</p> |
| |
| <p>The <code>predicted</code>, <code>active</code>, and <code>output</code> fields are extracted from the PMML model.</p> |
| |
| <h2 id="run-bundled-examples">Run Bundled Examples</h2> |
| |
| <p>To run the examples you must execute the following command:</p> |
| <div class="highlight"><pre><code class="language-java" data-lang="java"> <span class="no">STORM</span><span class="o">-</span><span class="no">HOME</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">storm</span> <span class="n">jar</span> <span class="no">STORM</span><span class="o">-</span><span class="no">HOME</span><span class="o">/</span><span class="n">examples</span><span class="o">/</span><span class="n">storm</span><span class="o">-</span><span class="n">pmml</span><span class="o">-</span><span class="n">examples</span><span class="o">/</span><span class="n">storm</span><span class="o">-</span><span class="n">pmml</span><span class="o">-</span><span class="n">examples</span><span class="o">-</span><span class="mf">2.0</span><span class="o">.</span><span class="mi">0</span><span class="o">-</span><span class="no">SNAPSHOT</span><span class="o">.</span><span class="na">jar</span> |
| <span class="n">org</span><span class="o">.</span><span class="na">apache</span><span class="o">.</span><span class="na">storm</span><span class="o">.</span><span class="na">pmml</span><span class="o">.</span><span class="na">JpmmlRunnerTestTopology</span> <span class="n">jpmmlTopology</span> <span class="nc">PMMLModel</span><span class="o">.</span><span class="na">xml</span> <span class="nc">RawInputData</span><span class="o">.</span><span class="na">csv</span> |
| </code></pre></div></div> |
| |
| |
| </div> |
| </div> |
| </div> |
| <footer> |
| <div class="container-fluid"> |
| <div class="row"> |
| <div class="col-md-2"> |
| <div class="footer-widget"> |
| <h5>Meetups</h5> |
| <div class="footer-widget"> |
| <a class="acevent" data-format="wide" data-mode="dark"></a> |
| </div> |
| </div> |
| </div> |
| <div class="col-md-4"> |
| <div class="footer-widget"> |
| <h5>About Apache Storm</h5> |
| <p>Apache Storm integrates with any queueing system and any database system. Apache Storm's spout abstraction makes it easy to integrate a new queuing system. Likewise, integrating Apache Storm with database systems is easy.</p> |
| </div> |
| </div> |
| <div class="col-md-2"> |
| <div class="footer-widget"> |
| <h5>First Look</h5> |
| <ul class="footer-list"> |
| <li><a href="/releases/current/Rationale.html">Rationale</a></li> |
| <li><a href="/releases/current/Tutorial.html">Tutorial</a></li> |
| <li><a href="/releases/current/Setting-up-development-environment.html">Setting up development environment</a></li> |
| <li><a href="/releases/current/Creating-a-new-Storm-project.html">Creating a new Apache Storm project</a></li> |
| </ul> |
| </div> |
| </div> |
| <div class="col-md-2"> |
| <div class="footer-widget"> |
| <h5>Documentation</h5> |
| <ul class="footer-list"> |
| <li><a href="/releases/current/index.html">Index</a></li> |
| <li><a href="/releases/current/javadocs/index.html">Javadoc</a></li> |
| <li><a href="/releases/current/FAQ.html">FAQ</a></li> |
| </ul> |
| </div> |
| </div> |
| <div class="col-md-2"> |
| <div class="footer-widget"> |
| <h5>Misc</h5> |
| <ul class="footer-list"> |
| <li><a href="https://www.apache.org/licenses/">Licenses</a></li> |
| <li><a href="https://www.apache.org/security/">Security</a></li> |
| <li><a href="https://www.apache.org/foundation/thanks.html">Sponsors</a></li> |
| <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a></li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| <hr/> |
| <div class="row"> |
| <div class="col-md-12"> |
| <p align="center">Copyright © 2024 <a href="https://www.apache.org">Apache Software Foundation</a> |
| . All Rights Reserved. |
| <br>Apache Storm, Apache, the Apache feather logo, and the Apache Storm project logos are trademarks of The Apache Software Foundation. |
| <br>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> |
| </div> |
| </div> |
| </div> |
| </footer> |
| <!--Footer End--> |
| <!-- Matomo --> |
| <script> |
| var _paq = window._paq = window._paq || []; |
| /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ |
| /* We explicitly disable cookie tracking to avoid privacy issues */ |
| _paq.push(['disableCookies']); |
| _paq.push(['trackPageView']); |
| _paq.push(['enableLinkTracking']); |
| (function() { |
| var u="//analytics.apache.org/"; |
| _paq.push(['setTrackerUrl', u+'matomo.php']); |
| _paq.push(['setSiteId', '38']); |
| var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; |
| g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); |
| })(); |
| </script> |
| <!-- End Matomo Code --> |
| <script src="https://www.apachecon.com/event-images/snippet.js"></script> |
| <!-- Scroll to top --> |
| <span class="totop"><a href="#"><i class="fa fa-angle-up"></i></a></span> |
| |
| </body> |
| |
| </html> |
| |