<html lang="en"><head>
    
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="Apex is an enterprise grade native YARN big data-in-motion platform that unifies stream processing as well as batch processing.">
    <meta name="author" content="Apache Software Foundation">
    <link rel="icon" href="favicon.ico">

    <title>Apache Apex</title>

    <!-- Main Stylesheet -->
    <link href="css/main.css" rel="stylesheet">

    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-85540278-1', 'auto');
      ga('send', 'pageview');
    </script>
    
  </head>

  <body>
    <nav class="navbar navbar-default navbar-static-top" id="main-nav">
      <div class="container">

      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="/">
          <img src="images/apex-logo.svg" class="logo" alt="Apache Apex Logo">
          Apache Apex<span class="trademark">&trade;</span>
        </a>
      </div>

      <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
        <ul class="nav navbar-right navbar-nav">
          <li class="nav-item">
            <a class="nav-link " href="/">Home</a>
          </li>
          <li class="nav-item">
            <a class="nav-link " href="/docs.html">Documentation</a>
          </li>
          <li class="nav-item">
            <a class="nav-link " href="/powered-by-apex.html">Powered By Apex</a>
          </li>
          <li class="nav-item">
            <a class="nav-link " href="/roadmap.html">Roadmap</a>
          </li>

            <li class="nav-item nav-mouseover">
              <ul class="dropdown-menu">
                <li class=""><a href="/community.html#mailing-lists">Mailing Lists</a></li>
                <li class=""><a href="/community.html#issue-tracking">Issue Tracking</a></li>
                <li class=""><a href="http://stackoverflow.com/questions/tagged/apache-apex">Stack Overflow</a></li>
                <li class=""><a href="/community.html#events">Events</a></li>
                <li class=""><a href="/community.html#contributing">Contributing</a></li>
                <li class=""><a href="http://www.apache.org/foundation/how-it-works.html">Apache Foundation</a></li>
              </ul>
              <a href="/community.html" class="nav-link">Community</a>
            </li>
          

            <li class="nav-item nav-mouseover">
              <ul class="dropdown-menu">
                <li class=""><a href="https://github.com/apache/apex-core">Apex Core</a></li>
                <li class=""><a href="https://github.com/apache/apex-malhar">Apex Malhar</a></li>
                <li class=""><a href="https://github.com/apache/apex-site">Apex Site</a></li>
              </ul>
              <a href="https://github.com/apache/apex-core" class="nav-link">Github</a>
            </li>
          
          <li class="nav-item">
            <a class="nav-link btn btn-success btn-download" href="/downloads.html">Download</a>
          </li>
        </ul>
        
      </div>
    </nav>

<div class="container">
  
  <h1 id="powered-by-apache-apex">Powered by Apache Apex</h1>
<p>This page lists organizations and software projects which work with Apache Apex. To be added to this page email users@apex.apache.org mailing list, or send a message to the @ApacheApex twitter account.</p>
<h2 id="companies">Companies</h2>
<p>Apex powers</p>
<ul>
<li>GE - use case presentation <a href="http://www.slideshare.net/ApacheApex/ge-iot-predix-time-series-data-ingestion-service-using-apache-apex-hadoop">slides</a> and <a href="https://www.youtube.com/watch?v=hmaSkXhHNu0">video</a> </li>
<li>Capital One - use case presentation <a href="http://www.slideshare.net/ApacheApex/capital-ones-next-generation-decision-in-less-than-2-ms">slides</a> and <a href="https://www.youtube.com/watch?v=98EW5NGM3u0">video</a> </li>
<li>Silver Spring Networks - use case presentation <a href="http://www.slideshare.net/ApacheApex/iot-big-data-ingestion-and-processing-in-hadoop-by-silver-spring-networks">slides</a> and <a href="https://www.youtube.com/watch?v=8VORISKeSjI">video</a></li>
<li>PubMatic - use case presentation <a href="https://www.youtube.com/watch?v=JSXpgfQFcU8">video</a></li>
<li>Xavient - Blog on <a href="https://techblog.xavient.com/real-time-data-ingestion-dip-apache-apex-co-dev-opportunity/"> Real Time Data Ingestion</a></li>
<li>ThreatMetrix</li>
<li>FacilitiesSupplies</li>
<li>DataTorrent</li>
<li>Royal Bank of Canada</li>
<li>Infosys</li>
<li>TechMahindra</li>
<li>MammothData</li>
<li>CloudWick</li>
<li>Synerzip</li>
<li>Trace3</li>
<li>LeadFerret</li>
<li>Target</li>
<li>geniSIGHTS</li>
<li>Aaum Analytics</li>
<li><a href="http://www.genius-minds.com/">Genius Minds</a></li>
<li>Fidelity National Information Services Inc (FIS Global)</li>
<li>Oraxi</li>
<li><a href="http://www.thinkbumblebee.com/">ThinkBumbleBee</a></li>
<li><a href="http://www.ellicium.com/">Ellicium</a></li>
</ul>
<h2 id="integrations">Integrations</h2>
<p>Apex integrates with</p>
<ul>
<li>Apache Beam</li>
<li>Apache SAMOA</li>
<li>Apache Calcite</li>
<li>Apache Nifi</li>
<li>Apache Geode (GemFire)</li>
<li>Apache Cassandra</li>
<li>Apache Kafka</li>
<li>Apache Hive</li>
<li>Apache Bigtop</li>
<li>Apache HBase</li>
<li>Apache ActiveMQ</li>
<li>Apache CouchDB</li>
<li>AWS S3</li>
<li>Couchbase</li>
<li>Memsql</li>
<li>Redis</li>
<li>MongoDB</li>
<li>JDBC (MySQL, PostgreSQL, Oracle)</li>
<li>Memcache</li>
<li>AWS Kinesis</li>
<li>RabbitMQ</li>
<li>ZeroMQ</li>
<li>Solace</li>
<li>H2O</li>
<li>Solr</li>
<li>ElasticSearch</li>
</ul>
<h2 id="universities-research-institutes">Universities &amp; Research Institutes</h2>
<p>Apex is being used in research projects at</p>
<ul>
<li>University of California San Diego</li>
<li>Dresden University of Technology</li>
<li>Delft University of Technology</li>
<li>Pune Institute of Computer Technology</li>
<li>Vishwakarma Institute of Information Technology, Pune</li>
<li>Symbiosis Institute of Technology, Lavale, Pune</li>
</ul>

</div>

  <hr>
  <div class="container">
    <footer id="main-footer">
      <p>
        Copyright &copy; <span id="copyright-year">2015</span> <a href="http://apache.org">The Apache Software Foundation</a>,
        Licensed under the Apache License, Version 2.0<br>
        Apache and the Apache feather logo are trademarks of The Apache Software Foundation. | <a href="/privacy.html">Privacy Policy</a><br>
        <a class="footer-link-img" href="http://apache.org"><img src="/images/asf_logo.svg" alt="The Apache Software Foundation"></a>
      </p>
    </footer>
  </div> <!-- /container -->

  <!-- Placed at the end of the document so the pages load faster -->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="/js/bootstrap.min.js"></script>
  <script src="js/docs.js"></script>

  <script>
    $('#copyright-year').text((new Date()).getFullYear());

    $('.btn-download').click(function(e){
      ga('send', {
        hitType: 'event',
        eventCategory: 'Download Button',
        eventAction: 'Button Click',
        eventLabel: 'Page Header'
      });
    });

  </script>

</body>
</html>
