blob: ac65065c15a107113a58184030ac31b1d2255b70 [file] [log] [blame]
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5073],{15680:(e,r,t)=>{t.d(r,{xA:()=>p,yg:()=>m});var a=t(96540);function i(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function l(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function n(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?l(Object(t),!0).forEach((function(r){i(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function u(e,r){if(null==e)return{};var t,a,i=function(e,r){if(null==e)return{};var t,a,i={},l=Object.keys(e);for(a=0;a<l.length;a++)t=l[a],r.indexOf(t)>=0||(i[t]=e[t]);return i}(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)t=l[a],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var o=a.createContext({}),d=function(e){var r=a.useContext(o),t=r;return e&&(t="function"==typeof e?e(r):n(n({},r),e)),t},p=function(e){var r=d(e.components);return a.createElement(o.Provider,{value:r},e.children)},s="mdxType",y={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},c=a.forwardRef((function(e,r){var t=e.components,i=e.mdxType,l=e.originalType,o=e.parentName,p=u(e,["components","mdxType","originalType","parentName"]),s=d(t),c=i,m=s["".concat(o,".").concat(c)]||s[c]||y[c]||l;return t?a.createElement(m,n(n({ref:r},p),{},{components:t})):a.createElement(m,n({ref:r},p))}));function m(e,r){var t=arguments,i=r&&r.mdxType;if("string"==typeof e||i){var l=t.length,n=new Array(l);n[0]=c;var u={};for(var o in r)hasOwnProperty.call(r,o)&&(u[o]=r[o]);u.originalType=e,u[s]="string"==typeof e?e:i,n[1]=u;for(var d=2;d<l;d++)n[d]=t[d];return a.createElement.apply(null,n)}return a.createElement.apply(null,t)}c.displayName="MDXCreateElement"},23993:(e,r,t)=>{t.r(r),t.d(r,{contentTitle:()=>o,default:()=>c,frontMatter:()=>u,metadata:()=>d,toc:()=>p});var a=t(58168),i=t(98587),l=(t(96540),t(15680)),n=["components"],u={title:"Community and Third Party Software",layout:"simple_page",canonical:"https://druid.apache.org/libraries"},o="Community and Third Party Software",d={type:"mdx",permalink:"/libraries",source:"@site/src/pages/libraries.md",title:"Community and Third Party Software",description:"Query Libraries",frontMatter:{title:"Community and Third Party Software",layout:"simple_page",canonical:"https://druid.apache.org/libraries"}},p=[{value:"Query Libraries",id:"query-libraries",level:2},{value:"Python",id:"python",level:4},{value:"R",id:"r",level:4},{value:"JavaScript",id:"javascript",level:4},{value:"Clojure",id:"clojure",level:4},{value:"Elixir",id:"elixir",level:4},{value:"Ruby",id:"ruby",level:4},{value:"SQL",id:"sql",level:4},{value:"PHP",id:"php",level:4},{value:"Scala",id:"scala",level:4},{value:"Java",id:"java",level:4},{value:".NET",id:"net",level:4},{value:"Rust",id:"rust",level:4},{value:"Other Druid Distributions",id:"other-druid-distributions",level:2},{value:"UIs",id:"uis",level:2},{value:"Tools",id:"tools",level:2},{value:"Community Extensions",id:"community-extensions",level:2},{value:"Add Your Software",id:"add-your-software",level:2}],s={toc:p},y="wrapper";function c(e){var r=e.components,t=(0,i.A)(e,n);return(0,l.yg)(y,(0,a.A)({},s,t,{components:r,mdxType:"MDXLayout"}),(0,l.yg)("h1",{id:"community-and-third-party-software"},"Community and Third Party Software"),(0,l.yg)("h2",{id:"query-libraries"},"Query Libraries"),(0,l.yg)("p",null,"Some great folks have written their own libraries to interact with Apache Druid."),(0,l.yg)("h4",{id:"python"},"Python"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/druid-io/pydruid"},"druid-io/pydruid")," - A python client for Druid")),(0,l.yg)("h4",{id:"r"},"R"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/druid-io/RDruid"},"druid-io/RDruid")," - An R connector for Druid")),(0,l.yg)("h4",{id:"javascript"},"JavaScript"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/implydata/plywood"},"implydata/plywood")," - A higher level API for Druid. An extension of the work that was started in facet.js."),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/7eggs/node-druid-query"},"7eggs/node-druid-query")," - A Node.js client for Druid")),(0,l.yg)("h4",{id:"clojure"},"Clojure"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/y42/clj-druid"},"y42/clj-druid")," - A Clojure client for Druid")),(0,l.yg)("h4",{id:"elixir"},"Elixir"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/GameAnalytics/panoramix"},"GameAnalytics/panoramix")," - An Elixir client for Druid")),(0,l.yg)("h4",{id:"ruby"},"Ruby"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/ruby-druid/ruby-druid"},"ruby-druid/ruby-druid")," - A ruby client for Druid"),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/redBorder/druid_config"},"redBorder/druid_config")," - A ruby client to configure and check the status of a Druid Cluster"),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/andremleblanc/druiddb-ruby"},"andremleblanc/druiddb-ruby")," - A Ruby client for Druid using the Kafka Indexing Service")),(0,l.yg)("h4",{id:"sql"},"SQL"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"http://calcite.apache.org/"},"Apache Calcite")," - SQL parser, planner and query engine whose ",(0,l.yg)("a",{parentName:"li",href:"http://calcite.apache.org/docs/druid_adapter.html"},"Druid adapter")," can query data residing in Druid, and combine it with data in other locations; has local and remote JDBC drivers ",(0,l.yg)("a",{parentName:"li",href:"http://calcite.apache.org/avatica/"},"powered by Avatica")),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/implydata/plyql"},"implydata/plyql")," - A command line and HTTP interface for issuing SQL queries to Druid")),(0,l.yg)("h4",{id:"php"},"PHP"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/pixelfederation/druid-php"},"pixelfederation/druid-php")," - A PHP client for Druid"),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/Neeke/PHP-Druid"},"Neeke/PHP-Druid")," - A Druid driver for PHP with PECL extension"),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/level23/druid-client"},"level23/druid-client")," - Druid-client library with a query-builder. This library also allows you to query metadata, reindex datasources and more. ")),(0,l.yg)("h4",{id:"scala"},"Scala"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/ing-bank/scruid"},"ing-bank/scruid")," - A Scala client for Druid")),(0,l.yg)("h4",{id:"java"},"Java"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/zapr-oss/druidry"},"zapr/druidry")," - A Java Client and query generator for Druid")),(0,l.yg)("h4",{id:"net"},".NET"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/MindscapeHQ/druid4net"},"raygun/druid4net")," - A .NET client for Druid written in C#. Supports the .NET full framework and .NET Core.")),(0,l.yg)("h4",{id:"rust"},"Rust"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/bugzmanov/druid-io-rs"},"bugzmanov/druid-io-rs")," - Fully asynchronous, future-enabled Apache Druid client library for rust programming language.")),(0,l.yg)("h2",{id:"other-druid-distributions"},"Other Druid Distributions"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/eBay/embedded-druid"},"eBay/embedded-druid")," - Leveraging Druid capabilities in stand alone application"),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://www.cloudera.com/products/hdp.html"},"Hortonworks Data platform")," - Hortonworks Data Platform includes Druid and Apache Hive to enable real-time data warehousing capabilities. "),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"http://imply.io/download"},"Imply Analytics Platform")," - The Imply Analytics platform includes Druid bundled with all its dependencies, an exploratory analytics UI, and a SQL layer."),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://www.rilldata.com/"},"Rill Data")," - Rill provides a truly elastic, fully managed cloud service for Apache Druid.")),(0,l.yg)("h2",{id:"uis"},"UIs"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/apache/superset"},"Apache Superset")," - Superset is a modern data exploration and data visualization platform."),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://www.deep.bi/solutions/apache-druid"},"Deep.Explorer")," - A UI built for slice & dice analytics, adhoc queries and powerful, easy data visualizations"),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/societe-generale/druidplugin"},"Grafana")," - A plugin for ",(0,l.yg)("a",{parentName:"li",href:"http://grafana.org/"},"Grafana")),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/Quantiply/grafana-plugins/tree/master/features/druid"},"grafana")," - A plugin for ",(0,l.yg)("a",{parentName:"li",href:"http://grafana.org/"},"Grafana")),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/implydata/pivot"},"Pivot")," - An exploratory analytics UI for Druid"),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/metabase/metabase"},"Metabase")," - Simple dashboards, charts and query tool for your Druid DB"),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/metatron-app/metatron-discovery"},"Metatron")," - All-in-one analytics with Druid from easy data preparation to fast visualization")),(0,l.yg)("h2",{id:"tools"},"Tools"),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"/docs/latest/operations/insert-segment-to-db"},"Insert Segments")," - A tool that can insert segments' metadata into Druid metadata storage."),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/liquidm/druid-dumbo"},"liquidm/druid-dumbo")," - Scripts to help generate batch configs for the ingestion of data into Druid"),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/housejester/druid-test-harness"},"housejester/druid-test-harness")," - A set of scripts to simplify standing up some servers and seeing how things work"),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/spaghettifunk/druid-prometheus-exporter"},"spaghettifunk/druid-prometheus-exporter")," - A HTTP service for collecting Druid metrics and exposing them as Prometheus metrics"),(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/rovio/rovio-ingest"},"rovio-ingest")," - An implementation of the DatasourceV2 interface of Apache Spark\u2122 for writing Spark Datasets to Apache Druid\u2122.")),(0,l.yg)("h2",{id:"community-extensions"},"Community Extensions"),(0,l.yg)("p",null,"These are extensions from the community, beyond those included in the Druid repository itself."),(0,l.yg)("ul",null,(0,l.yg)("li",{parentName:"ul"},(0,l.yg)("a",{parentName:"li",href:"https://github.com/acesinc/druid-cors-filter-extension"},"acesinc/druid-cors-filter-extension")," - An extension to enable CORS headers in http requests.")),(0,l.yg)("h2",{id:"add-your-software"},"Add Your Software"),(0,l.yg)("p",null,"If you've written software that uses Druid and want it included on this page,\n",(0,l.yg)("a",{parentName:"p",href:"https://github.com/apache/druid-website-src/blob/master/libraries.md"},"edit it on GitHub")," to create a pull request!"))}c.isMDXComponent=!0}}]);