blob: 6abf0ca8b95b1c9d33f0ff7439a1fe3b0001e320 [file] [log] [blame]
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5283],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function n(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var o=a.createContext({}),d=function(e){var t=a.useContext(o),r=t;return e&&(r="function"==typeof e?e(t):n(n({},t),e)),r},p=function(e){var t=d(e.components);return a.createElement(o.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,l=e.originalType,o=e.parentName,p=u(e,["components","mdxType","originalType","parentName"]),s=d(r),m=i,h=s["".concat(o,".").concat(m)]||s[m]||c[m]||l;return r?a.createElement(h,n(n({ref:t},p),{},{components:r})):a.createElement(h,n({ref:t},p))}));function h(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var l=r.length,n=new Array(l);n[0]=m;var u={};for(var o in t)hasOwnProperty.call(t,o)&&(u[o]=t[o]);u.originalType=e,u[s]="string"==typeof e?e:i,n[1]=u;for(var d=2;d<l;d++)n[d]=r[d];return a.createElement.apply(null,n)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},68126:(e,t,r)=>{r.r(t),r.d(t,{contentTitle:()=>o,default:()=>m,frontMatter:()=>u,metadata:()=>d,toc:()=>p});var a=r(87462),i=r(63366),l=(r(67294),r(3905)),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},c="wrapper";function m(e){var t=e.components,r=(0,i.Z)(e,n);return(0,l.kt)(c,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"community-and-third-party-software"},"Community and Third Party Software"),(0,l.kt)("h2",{id:"query-libraries"},"Query Libraries"),(0,l.kt)("p",null,"Some great folks have written their own libraries to interact with Apache Druid."),(0,l.kt)("h4",{id:"python"},"Python"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/druid-io/pydruid"},"druid-io/pydruid")," - A python client for Druid")),(0,l.kt)("h4",{id:"r"},"R"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/druid-io/RDruid"},"druid-io/RDruid")," - An R connector for Druid")),(0,l.kt)("h4",{id:"javascript"},"JavaScript"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/7eggs/node-druid-query"},"7eggs/node-druid-query")," - A Node.js client for Druid")),(0,l.kt)("h4",{id:"clojure"},"Clojure"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/y42/clj-druid"},"y42/clj-druid")," - A Clojure client for Druid")),(0,l.kt)("h4",{id:"elixir"},"Elixir"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/GameAnalytics/panoramix"},"GameAnalytics/panoramix")," - An Elixir client for Druid")),(0,l.kt)("h4",{id:"ruby"},"Ruby"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/ruby-druid/ruby-druid"},"ruby-druid/ruby-druid")," - A ruby client for Druid"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("h4",{id:"sql"},"SQL"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"http://calcite.apache.org/"},"Apache Calcite")," - SQL parser, planner and query engine whose ",(0,l.kt)("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.kt)("a",{parentName:"li",href:"http://calcite.apache.org/avatica/"},"powered by Avatica")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("h4",{id:"php"},"PHP"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/pixelfederation/druid-php"},"pixelfederation/druid-php")," - A PHP client for Druid"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/Neeke/PHP-Druid"},"Neeke/PHP-Druid")," - A Druid driver for PHP with PECL extension"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("h4",{id:"scala"},"Scala"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/ing-bank/scruid"},"ing-bank/scruid")," - A Scala client for Druid")),(0,l.kt)("h4",{id:"java"},"Java"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/zapr-oss/druidry"},"zapr/druidry")," - A Java Client and query generator for Druid")),(0,l.kt)("h4",{id:"net"},".NET"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("h4",{id:"rust"},"Rust"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("h2",{id:"other-druid-distributions"},"Other Druid Distributions"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/eBay/embedded-druid"},"eBay/embedded-druid")," - Leveraging Druid capabilities in stand alone application"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://www.rilldata.com/"},"Rill Data")," - Rill provides a truly elastic, fully managed cloud service for Apache Druid.")),(0,l.kt)("h2",{id:"uis"},"UIs"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/apache/superset"},"Apache Superset")," - Superset is a modern data exploration and data visualization platform."),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/societe-generale/druidplugin"},"Grafana")," - A plugin for ",(0,l.kt)("a",{parentName:"li",href:"http://grafana.org/"},"Grafana")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/Quantiply/grafana-plugins/tree/master/features/druid"},"grafana")," - A plugin for ",(0,l.kt)("a",{parentName:"li",href:"http://grafana.org/"},"Grafana")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/implydata/pivot"},"Pivot")," - An exploratory analytics UI for Druid"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/metabase/metabase"},"Metabase")," - Simple dashboards, charts and query tool for your Druid DB"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("h2",{id:"tools"},"Tools"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("h2",{id:"community-extensions"},"Community Extensions"),(0,l.kt)("p",null,"These are extensions from the community, beyond those included in the Druid repository itself."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("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.kt)("h2",{id:"add-your-software"},"Add Your Software"),(0,l.kt)("p",null,"If you've written software that uses Druid and want it included on this page,\n",(0,l.kt)("a",{parentName:"p",href:"https://github.com/apache/druid-website-src/blob/master/libraries.md"},"edit it on GitHub")," to create a pull request!"))}m.isMDXComponent=!0}}]);