<!DOCTYPE html>
<html class="no-js" lang="en">
    <head>
        <title>Powered by NiFi - Companies and Organizations using Apache NiFi</title>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <link rel="shortcut icon" href="/assets/images/nifi16.ico"/>
        <link rel="stylesheet" href="/stylesheets/app.min.5c81cf462909783b5f788de8312885d5e08d20aa6dd5f6eb9507dd445444a6cb.css">
        <link rel="stylesheet" href="/assets/stylesheets/font-awesome.min.css">
        <script src="/assets/js/modernizr.js"></script>
        <script src="/assets/js/webfontloader.js"></script>
        <script>
  var _paq = window._paq = window._paq || [];
  _paq.push(['disableCookies']);
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var baseUri = "//matomo.privacy.apache.org/";
    _paq.push(['setTrackerUrl', baseUri + 'matomo.php']);
    _paq.push(['setSiteId', '28']);
    var trackerElement = document.createElement('script');
    var firstScriptElement = document.getElementsByTagName('script')[0];
    trackerElement.async = true;
    trackerElement.src = baseUri + 'matomo.js';
    var firstScriptElement = document.getElementsByTagName('script')[0];
    if (window.location.host === 'nifi.apache.org') {
      firstScriptElement.parentNode.insertBefore(trackerElement, firstScriptElement);
    }
  })();
</script>
</head>
    <body><div class="sticky contain-to-grid">
    <nav class="top-bar" data-topbar role="navigation">
        <ul class="title-area">
            <li class="name">
                <h1>
                    <a href="index.html">
                        <img id="logo-top-bar" src="/assets/images/nifi-drop-white.svg" alt="Apache NiFi"/>
                    </a>
                </h1>
            </li>
            
            <li class="toggle-topbar menu-icon"><a href="#"><span></span></a></li>
        </ul>

        <section class="top-bar-section">
            
            <ul class="right">
                <li class="has-dropdown">
                    <a href="#">Project</a>
                    <ul class="dropdown">
                        <li><a href="index.html">Home</a></li>
                        <li><a href="https://blogs.apache.org/nifi/"><i class="fa fa-external-link external-link"></i>Apache NiFi Blog</a></li>
                        <li><a href="https://www.apache.org/licenses/"><i class="fa fa-external-link external-link"></i>License</a></li>
                    </ul>
                </li>
                <li class="has-dropdown">
                    <a href="#">Documentation</a>
                    <ul class="dropdown">
                        <li><a href="faq.html">FAQ</a></li>
                        <li><a href="videos.html">Videos</a></li>
                        <li><a href="docs.html">NiFi Docs</a></li>
                        <li><a href="https://cwiki.apache.org/confluence/display/NIFI"><i class="fa fa-external-link external-link"></i>Wiki</a></li>
                        <li><a href="security.html">NiFi Security Reports</a></li>
                        <li><a href="registry-security.html">NiFi Registry Security Reports</a></li>
                    </ul>
                </li>
                <li class="has-dropdown">
                    <a href="#">Downloads</a>
                    <ul class="dropdown">
                        <li><a href="download.html">Download NiFi</a></li>
                        <li><a href="https://cwiki.apache.org/confluence/display/NIFI/Release+Notes"><i class="fa fa-external-link external-link"></i>Release Notes</a></li>
                    </ul>
                </li>
                <li class="has-dropdown">
                    <a href="#">Community</a>
                    <ul class="dropdown">
                        <li><a href="https://cwiki.apache.org/confluence/display/NIFI/Contributor+Guide"><i class="fa fa-external-link external-link"></i>Contributor Guide</a></li>
                        <li><a href="mailing_lists.html">Mailing Lists &amp; Chat</a></li>
                        <li><a href="people.html">People</a></li>
                        <li><a href="powered-by-nifi.html">Powered by NiFi</a></li>
                    </ul>
                </li>
                <li class="has-dropdown">
                    <a href="#">Development</a>
                    <ul class="dropdown">
                        <li><a href="quickstart.html">Quickstart</a></li>
                        <li><a href="release-guide.html">Release Guide</a></li>
                        <li><a href="gpg.html">GPG Guide</a></li>
                        <li><a href="fds-release-guide.html">FDS Release Guide</a></li>
                        <li><a href="licensing-guide.html">Licensing Guide</a></li>
                        <li><a href="developer-guide.html">Developer Guide</a></li>
                        <li><a href="https://gitbox.apache.org/repos/asf/nifi.git"><i class="fa fa-external-link external-link"></i>Source</a></li>
                        <li><a href="https://issues.apache.org/jira/browse/NIFI"><i class="fa fa-external-link external-link"></i>Issues</a></li>
                        <li><a href="https://github.com/apache/nifi"><i class="fa fa-external-link external-link"></i>GitHub</a></li>
                    </ul>
                </li>
                <li class="has-dropdown">
                    <a href="#">ASF Links</a>
                    <ul class="dropdown">
                        <li><a href="https://www.apache.org"><i class="fa fa-external-link external-link"></i>Apache Software Foundation</a></li>
                        <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html"><i class="fa fa-external-link external-link"></i>Privacy Policy</a></li>
                        <li><a href="https://www.apache.org/foundation/sponsorship.html"><i class="fa fa-external-link external-link"></i>Sponsorship</a></li>
                        <li><a href="https://www.apache.org/security/"><i class="fa fa-external-link external-link"></i>Security</a></li>
                        <li><a href="https://www.apache.org/foundation/thanks.html"><i class="fa fa-external-link external-link"></i>Thanks</a></li>
                    </ul>
                </li>
                <li class="has-dropdown">
                    <a href="#">Subprojects</a>
                    <ul class="dropdown">
                        <li><a href="minifi/index.html">MiNiFi</a></li>
                        <li><a href="registry.html">Registry</a></li>
                        <li><a href="fds.html">FDS</a></li>
                    </ul>
                </li>
            </ul>
        </section>
    </nav>
</div>

          <div class="row">
            <div class="large-12 columns">
              <div class="large-space"></div>
	<h1 id="powered-by-apache-hahahugoshortcode-s0-hbhb">Powered by Apache <span class="ni">ni</span><span class="fi">fi</span>
</h1>
<h2 id="dove-iohttpswwwdoveio"><a href="https://www.dove.io">Dove IO</a></h2>
<p>The Dove IO Data Platform allows customers to process multimedia data, providing real-time identification of objects,
people, text, scenes, and activities in audio, image and video formatted data. The platform leverages NiFi to empower
customers to build workflows surrounding custom data inputs and transformations.</p>
<h2 id="flexilogichttpswwwflexilogixcom"><a href="https://www.flexilogix.com">Flexilogic</a></h2>
<p>Builds all data ingestion pipelines using NiFi. Have deployed NiFi clusters to ingest, transform and deliver to data
analytics backends serving all purposes of data mediation both for realtime and batch jobs.</p>
<h2 id="godatadrivenhttpsgodatadrivencom"><a href="https://godatadriven.com">GoDataDriven</a></h2>
<p>GoDataDriven, a Dutch service company in the data science and engineering space, helps customers ingest and process data
in real time from the most disparate devices (including but not limited to trains!).</p>
<h2 id="hashmap-inchttpswwwhashmapinccom"><a href="https://www.hashmapinc.com/">Hashmap, Inc.</a></h2>
<p>Hashmap uses Apache NiFi to securely collect, transmit, and transform data for ingest and delivery into our IoT / Time
Series Accelerator platform, allowing for outcome-based, real time analytics and visualization of oil &amp; gas, utilities,
manufacturing, industrial, retail, pharma, and process control data. Additionally, we are creating a catalog of open
source, ready-to-run, industry specific NiFi processors and controller services for protocols like OPC-UA, ETP, WITSML,
LAS, and many others.</p>
<h2 id="hastings-grouphttpswwwhastingsdirectcom"><a href="https://www.hastingsdirect.com/">Hastings Group</a></h2>
<p>Hastings Group is a fast growing, agile, digitally focused general insurance provider providing services to the UK car,
van, bike and home insurance market. We have strong relationships with all major price comparison websites (PCWs) and
utilise Apache NiFi to process and ingest millions of items of data.</p>
<h2 id="kuehnenagelhttpskuehne-nagelcom"><a href="https://kuehne-nagel.com/">Kuehne+Nagel</a></h2>
<p>Kuehne+Nagel is a global transport and logistics company founded in 1890. We use NiFi as a processing and orchestration
tool for the core company workflow - producing and dispatching documents.</p>
<h2 id="lookerhttpslookercom"><a href="https://looker.com/">Looker</a></h2>
<p>We&rsquo;re building all new data ingestion pipelines using NiFi. Existing pipelines are being migrated to NiFi as well. We
have deployed NiFi clusters to ingest, transform, and deliver data to various backends like Google Big Query, Amazon
Redshift, and Amazon S3.</p>
<h2 id="macquarie-telecom-grouphttpsmacquarietelecomgroupcom"><a href="https://macquarietelecomgroup.com">Macquarie Telecom Group</a></h2>
<p>Uses Apache NiFi to securely and reliably transfer, transform, enrich and deliver billions of individual events per day
(i.e. security logs, system metrics, aggregated data sets, etc) across multiple datacenters.</p>
<h2 id="micronhttpsmicroncom"><a href="https://micron.com">Micron</a></h2>
<p>Micron&rsquo;s Enterprise Analytics and Data team uses NiFi to acquire worldwide manufacturing data and ingest it into
symmetrical Global Data Warehouses. This data is vaulted and exposed via data marts providing our data scientists and
business partners a secured global view of our manufacturing processes.  For ingestion flows requiring higher
performance transformations, we utilize the NiFi Site-to-Site protocol to seamlessly transfer processing to Spark jobs
on our Hadoop clusters.  We have leveraged NiFi&rsquo;s REST API to automate the creation and monitoring of new ingestion
pipelines which furthers our goal of providing a complete Global Data Warehouse.</p>
<h2 id="onahttpsonaio"><a href="https://ona.io">Ona</a></h2>
<p>Ona is a software engineering and design firm based in Nairobi, Kenya and Washington, DC. Our mission is to improve the
effectiveness of humanitarian and development aid by empowering organizations worldwide with collective and actionable
intelligence. We use Apache NiFi to ingest, process, and disseminate global health and service delivery data from
diverse sources.</p>
<h2 id="onyx-pointhttpswwwonyxpointcom"><a href="https://www.onyxpoint.com">Onyx Point</a></h2>
<p>Design large scale NIFI clusters for high volume ingest/egress and provide day to day operational support and
maintenance.</p>
<h2 id="payoffhttpswwwpayoffcom"><a href="https://www.payoff.com">Payoff</a></h2>
<p>NiFi primarily serves as our consumer between Kafka and HDFS. NiFi also provides schema validation for event streams
while enabling us to modify and republish secure event streams for general use. NiFi extracts and standardizes large
datasets from third parties between various sources including HDFS/S3/Kafka/sftp.</p>
<h2 id="slovak-telekomhttpswwwtelekomskabout"><a href="https://www.telekom.sk/about/">Slovak Telekom</a></h2>
<p>Uses Apache NiFi to power active monitoring. As various network devices are being monitored, SNMP as the unifying
protocol is used for communication. Apache NiFi is in active query mode to periodically query these devices.
Transformation of the SNMP responses and their transfer to HDFS and Elastic are built using Apache NiFi as well.</p>
<h2 id="think-big-a-teradata-companyhttpswwwthinkbiganalyticscom"><a href="https://www.thinkbiganalytics.com">Think Big, A Teradata Company</a></h2>
<p>Think Big&rsquo;s open-source data lake management platform <a href="https://kylo.io">Kylo</a> offers a turn-key, enterprise-ready data
lake solution that integrates best practices around metadata management, governance, and security gleaned from Think
Big&rsquo;s 150+ big data implementation projects. Kylo uses Apache NiFi as the underlying scheduler and orchestration engine,
along with other technologies like Apache Hadoop and Apache Spark.</p>
<p><em>Submit a <a href="https://github.com/apache/nifi-site/pulls">Pull Request</a> or send a short description of your organization and
usage to <a href="https://nifi.apache.org/mailing_lists.html">Users Mailing List</a> to be added.</em></p>

</div>
          </div>
        <div class="row">
    <div class="large-12 columns footer">
        <a href="https://www.apache.org">
            <img id="asf-logo" alt="Apache Software Foundation" src="/assets/images/asf_logo.png" width="200" style="margin:0px 10px" />
        </a>
        <a  href="https://www.apache.org/events/current-event.html">
            <img src="https://www.apache.org/events/current-event-234x60.png" style="margin:0px 10px" />
        </a>
        <div id="copyright">
            <p>Copyright &#169; 2022 The Apache Software Foundation, Licensed under the <a
                    href="https://www.apache.org/licenses/">Apache License, Version 2.0</a>.<br/>Apache, the
                Apache feather logo, NiFi, Apache NiFi and the project logo are trademarks of The Apache Software
                Foundation.</p>
        </div>
    </div>
</div>
        <script src="/assets/js/jquery.min.js"></script>
        <script src="/assets/js/foundation.js"></script>
        <script src="/assets/js/app.js"></script>
    </body>
</html>