Update README.md
This commit is contained in:
parent
e07f9eb92b
commit
450711b10d
1 changed files with 82 additions and 1 deletions
83
README.md
83
README.md
|
@ -2,4 +2,85 @@
|
|||
|
||||
Clojure library for [Druid](http://druid.io/).
|
||||
|
||||
Currently in very early stage, contains schemas to validate a Druid query.
|
||||
clj-druid eases druid integration providing a client as well as a set of schemas to validate queries.
|
||||
Current version is up to date with latest query API from official docs.
|
||||
|
||||
## Installing
|
||||
|
||||
Add the following to your [Leiningen](http://github.com/technomancy/leiningen) `project.clj`:
|
||||
|
||||
![latest clj-druid version](https://clojars.org/clj-druid/latest-version.svg)
|
||||
|
||||
## Usage
|
||||
|
||||
### Client
|
||||
|
||||
Connect to a druid cluster through Zookeeper,
|
||||
this method supports auto detection and update of available brokers for easy HA/load balancing
|
||||
|
||||
```clj
|
||||
(use 'clj-druid.client)
|
||||
(connect {:zk {:host "127.0.0.1:2181"
|
||||
:discovery-path "/druid/discovery"}})
|
||||
```
|
||||
|
||||
you can also connect by supplying a vector of hosts, useful for dev, local testing
|
||||
|
||||
```clj
|
||||
(use 'clj-druid.client)
|
||||
(connect {:hosts ["http://127.0.0.1:8083/druid/v2"]})
|
||||
```
|
||||
|
||||
### Querying
|
||||
|
||||
Issue druid queries supplying
|
||||
* a load balance strategy [fixed random]
|
||||
* a queryType
|
||||
* a query in the following form
|
||||
|
||||
```clj
|
||||
(def q
|
||||
{:queryType :timeseries
|
||||
:dataSource "sample_datasource"
|
||||
:granularity :day
|
||||
:filter {
|
||||
:type :and
|
||||
:fields [
|
||||
{:type :selector :dimension "sample_dimension1" :value "sample_value1"}
|
||||
{:type :or
|
||||
:fields [
|
||||
{:type :selector :dimension "sample_dimension2" :value "sample_value2"}
|
||||
{:type :selector :dimension "sample_dimension3" :value "sample_value3"}]}]}
|
||||
:aggregations [
|
||||
{:type :longSum :name "sample_name1", :fieldName "sample_fieldName1"}
|
||||
{:type :doubleSum :name "sample_name2", :fieldName "sample_fieldName2"}]
|
||||
:postAggregations [
|
||||
{:type :arithmetic
|
||||
:name "sample_divide"
|
||||
:fn "/"
|
||||
:fields [{:type :fieldAccess :name "sample_name1" :fieldName "sample_fieldName1"}
|
||||
{:type :fieldAccess :name "sample_name2" :fieldName "sample_fieldName2"}]}]
|
||||
|
||||
:intervals ["2012-01-01T00:00:00.000/2012-01-03T00:00:00.000"]})
|
||||
|
||||
(query random (:queryType q) q)
|
||||
```
|
||||
|
||||
### Example
|
||||
|
||||
An example using compojure-api to spawn a full druid API is located in the examples folder
|
||||
|
||||
```bash
|
||||
git clone https://github.com/y42/clj-druid
|
||||
cd clj-druid/examples
|
||||
lein ring server
|
||||
```
|
||||
|
||||
Have Fun!
|
||||
|
||||
## License
|
||||
|
||||
Copyright © 2015 Guillaume Buisson
|
||||
|
||||
Distributed under the Eclipse Public License, the same as Clojure.
|
||||
|
||||
|
|
Loading…
Reference in a new issue