<!DOCTYPE html>
<html lang="en">
  <head>	
    <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Apache Druid">
<meta name="keywords" content="druid,kafka,database,analytics,streaming,real-time,real time,apache,open source">
<meta name="author" content="Apache Software Foundation">

<title>Druid | Community and Third Party Software</title>
<link rel="canonical" href="https://druid.apache.org/libraries" />
<link rel="alternate" type="application/atom+xml" href="/feed">
<link rel="shortcut icon" href="/img/favicon.png">

<link rel="stylesheet" href="/assets/css/font-awesome-5.css">

<link href='//fonts.googleapis.com/css?family=Open+Sans+Condensed:300,700,300italic|Open+Sans:300italic,400italic,600italic,400,300,600,700' rel='stylesheet' type='text/css'>

<link rel="stylesheet" href="/css/bootstrap-pure.css?v=1.1">
<link rel="stylesheet" href="/css/base.css?v=1.1">
<link rel="stylesheet" href="/css/header.css?v=1.1">
<link rel="stylesheet" href="/css/footer.css?v=1.1">
<link rel="stylesheet" href="/css/syntax.css?v=1.1">
<link rel="stylesheet" href="/css/docs.css?v=1.1">

<script>
  (function() {
    var cx = '000162378814775985090:molvbm0vggm';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
        '//cse.google.com/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
  })();
</script>


  </head>
  <body>	
    <!-- Start page_header include -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<div class="top-navigator">
  <div class="container">
    <div class="left-cont">
      <a class="logo" href="/"><span class="druid-logo"></span></a>
    </div>
    <div class="right-cont">
      <ul class="links">
        <li class=""><a href="/technology">Technology</a></li>
        <li class=""><a href="/use-cases">Use Cases</a></li>
        <li class=""><a href="/druid-powered">Powered By</a></li>
        <li class=""><a href="/docs/latest/design/">Docs</a></li>
        <li class=""><a href="/community/">Community</a></li>
        <li class="header-dropdown">
          <a>Apache</a>
          <div class="header-dropdown-menu">
            <a href="https://www.apache.org/" target="_blank">Foundation</a>
            <a href="https://www.apache.org/events/current-event" target="_blank">Events</a>
            <a href="https://www.apache.org/licenses/" target="_blank">License</a>
            <a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a>
            <a href="https://www.apache.org/security/" target="_blank">Security</a>
            <a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a>
          </div>
        </li>
        <li class=" button-link"><a href="/downloads.html">Download</a></li>
      </ul>
    </div>
  </div>
  <div class="action-button menu-icon">
    <span class="fa fa-bars"></span> MENU
  </div>
  <div class="action-button menu-icon-close">
    <span class="fa fa-times"></span> MENU
  </div>
</div>

<script type="text/javascript">
  var $menu = $('.right-cont');
  var $menuIcon = $('.menu-icon');
  var $menuIconClose = $('.menu-icon-close');

  function showMenu() {
    $menu.fadeIn(100);
    $menuIcon.fadeOut(100);
    $menuIconClose.fadeIn(100);
  }

  $menuIcon.click(showMenu);

  function hideMenu() {
    $menu.fadeOut(100);
    $menuIconClose.fadeOut(100);
    $menuIcon.fadeIn(100);
  }

  $menuIconClose.click(hideMenu);

  $(window).resize(function() {
    if ($(window).width() >= 840) {
      $menu.fadeIn(100);
      $menuIcon.fadeOut(100);
      $menuIconClose.fadeOut(100);
    }
    else {
      $menu.fadeOut(100);
      $menuIcon.fadeIn(100);
      $menuIconClose.fadeOut(100);
    }
  });
</script>

<!-- Stop page_header include -->


    <div class="druid-header">
  <div class="container">
    <h1>Community and Third Party Software</h1>
    <h4></h4>
  </div>
</div>

<div class="container">
  <div class="row">
    <div class="col-md-10 col-md-offset-1">
      <h2 id="query-libraries">Query Libraries</h2>

<p>Some great folks have written their own libraries to interact with Apache Druid.</p>

<h4 id="python">Python</h4>

<ul>
<li><a href="https://github.com/druid-io/pydruid">druid-io/pydruid</a> - A python client for Druid</li>
</ul>

<h4 id="r">R</h4>

<ul>
<li><a href="https://github.com/druid-io/RDruid">druid-io/RDruid</a> - An R connector for Druid</li>
</ul>

<h4 id="javascript">JavaScript</h4>

<ul>
<li><a href="https://github.com/implydata/plywood">implydata/plywood</a> - A higher level API for Druid. An extension of the work that was started in facet.js.</li>
<li><a href="https://github.com/7eggs/node-druid-query">7eggs/node-druid-query</a> - A Node.js client for Druid</li>
</ul>

<h4 id="clojure">Clojure</h4>

<ul>
<li><a href="https://github.com/y42/clj-druid">y42/clj-druid</a> - A Clojure client for Druid</li>
</ul>

<h4 id="elixir">Elixir</h4>

<ul>
<li><a href="https://github.com/GameAnalytics/panoramix">GameAnalytics/panoramix</a> - An Elixir client for Druid</li>
</ul>

<h4 id="ruby">Ruby</h4>

<ul>
<li><a href="https://github.com/ruby-druid/ruby-druid">ruby-druid/ruby-druid</a> - A ruby client for Druid</li>
<li><a href="https://github.com/redBorder/druid_config">redBorder/druid_config</a> - A ruby client to configure and check the status of a Druid Cluster</li>
<li><a href="https://github.com/andremleblanc/druiddb-ruby">andremleblanc/druiddb-ruby</a> - A Ruby client for Druid using the Kafka Indexing Service</li>
</ul>

<h4 id="sql">SQL</h4>

<ul>
<li><a href="http://calcite.apache.org/">Apache Calcite</a> - SQL parser, planner and query engine whose <a href="http://calcite.apache.org/docs/druid_adapter.html">Druid adapter</a> can query data residing in Druid, and combine it with data in other locations; has local and remote JDBC drivers <a href="http://calcite.apache.org/avatica/">powered by Avatica</a></li>
<li><a href="https://github.com/implydata/plyql">implydata/plyql</a> - A command line and HTTP interface for issuing SQL queries to Druid</li>
</ul>

<h4 id="php">PHP</h4>

<ul>
<li><a href="https://github.com/pixelfederation/druid-php">pixelfederation/druid-php</a> - A PHP client for Druid</li>
<li><a href="https://github.com/Neeke/PHP-Druid">Neeke/PHP-Druid</a> - A Druid driver for PHP with PECL extension</li>
<li><a href="https://github.com/level23/druid-client">level23/druid-client</a> - Druid-client library with a query-builder. This library also allows you to query metadata, reindex datasources and more. </li>
</ul>

<h4 id="scala">Scala</h4>

<ul>
<li><a href="https://github.com/ing-bank/scruid">ing-bank/scruid</a> - A Scala client for Druid</li>
</ul>

<h4 id="java">Java</h4>

<ul>
<li><a href="https://github.com/zapr-oss/druidry">zapr/druidry</a> - A Java Client and query generator for Druid</li>
</ul>

<h4 id="net">.NET</h4>

<ul>
<li><a href="https://github.com/MindscapeHQ/druid4net">raygun/druid4net</a> - A .NET client for Druid written in C#. Supports the .NET full framework and .NET Core.</li>
</ul>

<h4 id="rust">Rust</h4>

<ul>
<li><a href="https://github.com/bugzmanov/druid-io-rs">bugzmanov/druid-io-rs</a> - Fully asynchronous, future-enabled Apache Druid client library for rust programming language.</li>
</ul>

<h2 id="other-druid-distributions">Other Druid Distributions</h2>

<ul>
<li><a href="https://github.com/eBay/embedded-druid">eBay/embedded-druid</a> - Leveraging Druid capabilities in stand alone application</li>
<li><a href="https://www.cloudera.com/products/hdp.html">Hortonworks Data platform</a> - Hortonworks Data Platform includes Druid and Apache Hive to enable real-time data warehousing capabilities.<br></li>
<li><a href="http://imply.io/download">Imply Analytics Platform</a> - The Imply Analytics platform includes Druid bundled with all its dependencies, an exploratory analytics UI, and a SQL layer.</li>
<li><a href="https://www.rilldata.com/">Rill Data</a> - Rill provides a truly elastic, fully managed cloud service for Apache Druid.</li>
</ul>

<h2 id="uis">UIs</h2>

<ul>
<li><a href="https://github.com/airbnb/superset">airbnb/superset</a> - A web application to slice, dice and visualize data out of Druid. Formerly Caravel and Panoramix</li>
<li><a href="https://www.deep.bi/solutions/apache-druid">Deep.Explorer</a> - A UI built for slice &amp; dice analytics, adhoc queries and powerful, easy data visualizations</li>
<li><a href="https://github.com/societe-generale/druidplugin">Grafana</a> - A plugin for <a href="http://grafana.org/">Grafana</a></li>
<li><a href="https://github.com/Quantiply/grafana-plugins/tree/master/features/druid">grafana</a> - A plugin for <a href="http://grafana.org/">Grafana</a></li>
<li><a href="https://github.com/implydata/pivot">Pivot</a> - An exploratory analytics UI for Druid</li>
<li><a href="https://github.com/metabase/metabase">Metabase</a> - Simple dashboards, charts and query tool for your Druid DB</li>
<li><a href="https://github.com/metatron-app/metatron-discovery">Metatron</a> - All-in-one analytics with Druid from easy data preparation to fast visualization</li>
</ul>

<h2 id="tools">Tools</h2>

<ul>
<li><a href="/docs/latest/operations/insert-segment-to-db.html">Insert Segments</a> - A tool that can insert segments&#39; metadata into Druid metadata storage.</li>
<li><a href="https://github.com/liquidm/druid-dumbo">liquidm/druid-dumbo</a> - Scripts to help generate batch configs for the ingestion of data into Druid</li>
<li><a href="https://github.com/housejester/druid-test-harness">housejester/druid-test-harness</a> - A set of scripts to simplify standing up some servers and seeing how things work</li>
<li><a href="https://github.com/spaghettifunk/druid-prometheus-exporter">spaghettifunk/druid-prometheus-exporter</a> - A HTTP service for collecting Druid metrics and exposing them as Prometheus metrics</li>
<li><a href="https://github.com/rovio/rovio-ingest">rovio-ingest</a> - An implementation of the DatasourceV2 interface of Apache Spark™ for writing Spark Datasets to Apache Druid™.</li>
</ul>

<h2 id="community-extensions">Community Extensions</h2>

<p>These are extensions from the community, beyond those included in the Druid repository itself.</p>

<ul>
<li><a href="https://github.com/acesinc/druid-cors-filter-extension">acesinc/druid-cors-filter-extension</a> - An extension to enable CORS headers in http requests.</li>
</ul>

<h2 id="add-your-software">Add Your Software</h2>

<p>If you&#39;ve written software that uses Druid and want it included on this page,
<a href="https://github.com/apache/druid-website-src/blob/master/libraries.md">edit it on GitHub</a> to create a pull request!</p>

    </div>
  </div>
</div>

    
    <!-- Start page_footer include -->
<footer class="druid-footer">
<div class="container">
  <div class="text-center">
    <p>
    <a href="/technology">Technology</a>&ensp;·&ensp;
    <a href="/use-cases">Use Cases</a>&ensp;·&ensp;
    <a href="/druid-powered">Powered by Druid</a>&ensp;·&ensp;
    <a href="/docs/latest/">Docs</a>&ensp;·&ensp;
    <a href="/community/">Community</a>&ensp;·&ensp;
    <a href="/downloads.html">Download</a>&ensp;·&ensp;
    <a href="/faq">FAQ</a>
    </p>
  </div>
  <div class="text-center">
    <a title="Join the user group" href="https://groups.google.com/forum/#!forum/druid-user" target="_blank"><span class="fa fa-comments"></span></a>&ensp;·&ensp;
    <a title="Follow Druid" href="https://twitter.com/druidio" target="_blank"><span class="fab fa-twitter"></span></a>&ensp;·&ensp;
    <a title="GitHub" href="https://github.com/apache/druid" target="_blank"><span class="fab fa-github"></span></a>
  </div>
  <div class="text-center license">
    Copyright © 2020 <a href="https://www.apache.org/" target="_blank">Apache Software Foundation</a>.<br>
    Except where otherwise noted, licensed under <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.<br>
    Apache Druid, Druid, and the Druid logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.
  </div>
</div>
</footer>

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'UA-131010415-1');
</script>
<script>
  function trackDownload(type, url) {
    ga('send', 'event', 'download', type, url);
  }
</script>
<script src="//code.jquery.com/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="/assets/js/druid.js"></script>
<!-- stop page_footer include -->

    
  </body>
</html>
