<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.7.1 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Hivemall &#x2013; Project Summary</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.6.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
      <script type="text/javascript" src="./js/apache-maven-fluido-1.6.min.js"></script>
      </head>
    <body class="topBarEnabled">
                      <a href="https://github.com/apache/incubator-hivemall">
      <img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
        src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"
        alt="Fork me on GitHub">
    </a>
      <div id="topbar" class="navbar navbar-fixed-top navbar-inverse">
      <div class="navbar-inner">
            <div class="container"><div class="nav-collapse">
            <ul class="nav">
        <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="index.html" title="Home">Home</a></li>
            <li><a href="download.html" title="Download">Download</a></li>
            <li><a href="license.html" title="Licenses">Licenses</a></li>
            <li><a href="team-list.html" title="Team">Team</a></li>
            <li><a href="poweredby.html" title="Powered By">Powered By</a></li>
            <li><a href="http://incubator.apache.org/projects/hivemall.html" title="Incubation Status">Incubation Status</a></li>
        </ul>
      </li>
        <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="userguide/index.html" title="User Guide">User Guide</a></li>
            <li><a href="overview.html" title="Overview">Overview</a></li>
            <li><a href="https://cwiki.apache.org/confluence/display/HIVEMALL" target="_blank" title="Wiki">Wiki</a></li>
            <li><a href="faq.html" title="FAQ">FAQ</a></li>
        </ul>
      </li>
        <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Get Involved <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a></li>
            <li><a href="https://issues.apache.org/jira/browse/HIVEMALL" target="_blank" title="Issues (Jira)">Issues (Jira)</a></li>
            <li><a href="repository.html" title="Source (Git)">Source (Git)</a></li>
            <li><a href="https://travis-ci.org/apache/incubator-hivemall" target="_blank" title="Travis CI">Travis CI</a></li>
            <li><a href="contributing.html" title="Contributing">Contributing</a></li>
            <li><a href="release-guide.html" title="Release Guide">Release Guide</a></li>
        </ul>
      </li>
        <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="http://www.apache.org/foundation/how-it-works.html" target="_blank" title="How Apache Works">How Apache Works</a></li>
            <li><a href="http://www.apache.org/foundation/" target="_blank" title="Foundation">Foundation</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank" title="Sponsoring Apache">Sponsoring Apache</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html" target="_blank" title="Thanks">Thanks</a></li>
        </ul>
      </li>
              </ul>
                              <ul class="nav pull-right"><li>
        <a href="https://twitter.com/ApacheHivemall" class="twitter-follow-button" data-show-count="false" data-align="right" data-size="large" data-show-screen-name="true" data-lang="en">Follow ApacheHivemall</a>
    <script type="text/javascript">!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
        </li></ul>
                    </div>
        </div>
      </div>
    </div>
    <div class="container">
      <div id="banner">
        <div class="pull-left"><div id="bannerLeft"><h2>Apache Hivemall</h2>
</div>
</div>
        <div class="pull-right"></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2018-03-14<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 0.5.1-incubating-SNAPSHOT</li>
        </ul>
      </div>
        <div id="bodyColumn" >
<div class="section">
<h2><a name="Project_Summary"></a>Project Summary</h2><a name="Project_Summary"></a>
<div class="section">
<h3><a name="Project_Information"></a>Project Information</h3><a name="Project_Information"></a>
<table border="0" class="table table-striped">
<tr class="a">
<th>Field</th>
<th>Value</th></tr>
<tr class="b">
<td>Name</td>
<td>Apache Hivemall</td></tr>
<tr class="a">
<td>Description</td>
<td>Scalable Machine Learning Library for Apache Hive, Apache Spark, and Apache Pig</td></tr>
<tr class="b">
<td>Homepage</td>
<td><a class="externalLink" href="http://hivemall.incubator.apache.org/">http://hivemall.incubator.apache.org/</a></td></tr></table></div>
<div class="section">
<h3><a name="Project_Organization"></a>Project Organization</h3><a name="Project_Organization"></a>
<table border="0" class="table table-striped">
<tr class="a">
<th>Field</th>
<th>Value</th></tr>
<tr class="b">
<td>Name</td>
<td>Apache Hivemall</td></tr>
<tr class="a">
<td>URL</td>
<td><a class="externalLink" href="http://hivemall.incubator.apache.org/">http://hivemall.incubator.apache.org/</a></td></tr></table></div>
<div class="section">
<h3><a name="Build_Information"></a>Build Information</h3><a name="Build_Information"></a>
<table border="0" class="table table-striped">
<tr class="a">
<th>Field</th>
<th>Value</th></tr>
<tr class="b">
<td>GroupId</td>
<td>org.apache.hivemall</td></tr>
<tr class="a">
<td>ArtifactId</td>
<td>hivemall</td></tr>
<tr class="b">
<td>Version</td>
<td>0.5.1-incubating-SNAPSHOT</td></tr>
<tr class="a">
<td>Type</td>
<td>pom</td></tr></table></div></div>
        </div>
    </div>
    <hr/>
    <footer>
      <div class="container">
        <div class="row">
<p>
			  <small>
                Apache Hivemall is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by <a href="http://incubator.apache.org/">the Apache Incubator</a>.
                Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, 
                and decision making process have stabilized in a manner consistent with other successful ASF projects. 
                While incubation status is not necessarily a reflection of the completeness or stability of the code, 
                it does indicate that the project has yet to be fully endorsed by the ASF.
			  </small>
			</p>
        </div>
        <p id="poweredBy" class="pull-right">  <a href="http://incubator.apache.org/projects/hivemall.html" title="Apache Incubator" class="builtBy"><img class="builtBy"  alt="Apache Incubator" src="http://incubator.apache.org/images/egg-logo.png"    /></a>
  </p>
        </div>
    </footer>
    </body>
</html>
