-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathindex.html
153 lines (147 loc) · 6.69 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
---
layout: default
---
<div class="container-fluid hero-section">
<div class="row hero-top">
<div class="col-md-2"></div>
<div class="col-md-3"><img class="logo" src="{{ '/assets/images/high-res-logo.png' | prepend: site.baseurl }}"></div>
<div class="col-md-5 summary">
<center>
<h2 class="hero-title">Onyx</h2>
<h3 class="hero-subtitle">distributed computation for the cloud</h3>
<a href="{{ '/get-started' | prepend: site.baseurl }}"><button class="get-started btn btn-lg btn-primary" type="submit">Get Started</button></a>
</center>
</div>
<div class="col-md-2"></div>
</div>
<div class="row project-stats">
<div class="col-md-3 project-stat">
<a href="https://github.com/onyx-platform/onyx/releases/tag/{{ site.onyx_version }}">Latest version: {{ site.onyx_version }}</a>
</div>
<div class="col-md-3 project-stat">
<span class="onyx-pub username fa fa-envelope-o"></span>
<span><a href="http://eepurl.com/beFW_P">Newsletter Sign-up</a></span>
</div>
<div class="col-md-3 project-stat">
<span class="onyx-pub username fa fa-twitter"></span>
<span><a href="https://twitter.com/OnyxPlatform">@{{ site.twitter_username }}</a></span>
</div>
<div class="col-md-3 project-stat">
<span class="onyx-pub username fa fa-github"></span>
<span><a href="https://github.com/onyx-platform/onyx">{{ site.github_username }}</a></span>
</div>
</div>
</div>
<div class="container-fluid ds-section">
<div class="row">
<div class="col-md-1"></div>
<div class="col-md-5 panel">
<h3 class="main-subtitle">Data Driven API</h3>
<div class="row">
<div class="col-md-12 ds-description"><p class="index-description">Onyx programs are described using immutable data structures, putting a powerful force in the hands of the developer to cross language and machine boundaries at runtime. Onyx knows how to speak to many storage solutions, including those below.</p></div>
</div>
<div class="row onyx-medium-row onyx-medium-row-top">
<div class="col-md-12">
<a href="https://github.com/onyx-platform/onyx-kafka"><span class="badge onyx-medium-badge">Kafka</span></a>
<a href="https://github.com/onyx-platform/onyx-datomic"><span class="badge onyx-medium-badge">Datomic</span></a>
<a href="https://github.com/onyx-platform/onyx-sql"><span class="badge onyx-medium-badge">SQL</span></a>
<a href="https://github.com/onyx-platform/onyx-redis"><span class="badge onyx-medium-badge">Redis</span></a>
<a href="https://github.com/onyx-platform/onyx-elasticsearch"><span class="badge onyx-medium-badge">ElasticSearch</span></a>
<a href="https://github.com/onyx-platform/onyx-amazon-sqs"><span class="badge onyx-medium-badge">SQS</span></a>
</div>
</div>
<div class="row onyx-medium-row onyx-medium-row-bottom">
<div class="col-md-12">
<a href="https://github.com/onyx-platform/onyx-bookkeeper"><span class="badge onyx-medium-badge">BookKeeper</span></a>
<a href="https://github.com/onyx-platform/onyx/blob/master/doc/user-guide/core-async-plugin.adoc"><span class="badge onyx-medium-badge">core.async</span></a>
<a href="https://github.com/onyx-platform/onyx-durable-queue"><span class="badge onyx-medium-badge">durable-queue</span></a>
<a href="https://github.com/onyx-platform/onyx-seq"><span class="badge onyx-medium-badge">lazy sequences</span></a>
</div>
</div>
</div>
<div class="col-md-5">
{% highlight javascript %}
{
"onyx/name": "in",
"onyx/medium": "kafka",
"onyx/plugin": "onyx.plugin.kafka/input",
"onyx/type": "input",
"onyx/language": "clojure",
"onyx/batch-size": 20,
"onyx/doc": "Reads segments from a Kafka topic",
"kafka/topic": "tweets",
"kafka/zookeeper": "127.0.0.1:2181",
"kafka/group-id": "onyx-consumer"
}
{% endhighlight %}
</div>
<div class="col-md-1"></div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="col-md-1"></div>
<div class="col-md-5 panel">
<div class="row">
<div class="col-md-12">
<h3 class="main-subtitle">Powerful Streaming Primitives</h3>
<p class="index-description">Advancing windowing APIs split up a potentially unbounded data set into finite, possibly overlapping portions. Aggregations over distinct portions of a stream are as simple as a data structure.</p>
</div>
</div>
<div class="row onyx-medium-row onyx-medium-row-top">
<div class="col-md-12">
<span class="badge onyx-medium-badge">fixed-windows</span>
<span class="badge onyx-medium-badge">sliding-windows</span>
<span class="badge onyx-medium-badge">session-windows</span>
<span class="badge onyx-medium-badge">global-windows</span>
</div>
</div>
<div class="row onyx-medium-row onyx-medium-row-bottom">
<div class="col-md-12">
<span class="badge onyx-medium-badge">aggregations</span>
<span class="badge onyx-medium-badge">timer-triggers</span>
<span class="badge onyx-medium-badge">segment-triggers</span>
<span class="badge onyx-medium-badge">refinement-modes</span>
</div>
</div>
</div>
<div class="col-md-5">
{% highlight javascript %}
{
"window/id": "sum-transactions",
"window/task": "parse-price",
"window/type": "sliding",
"window/aggregation":
["onyx.windowing.aggregation/sum", "price"],
"window/window-key": "event-time",
"window/range": [5, "minutes"],
"window/slide": [1, "minute"],
"window/doc": "Sum the price field into sliding windows"
}
{% endhighlight %}
</div>
<div class="col-md-1"></div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="col-md-1"></div>
<div class="col-md-5 panel">
<div class="row">
<div class="col-md-12">
<h3 class="main-subtitle">Native Abstractions</h3>
<p class="index-description">Onyx keeps its own abstractions to an absolute minimum. Instead, it leverages the abstractions that already exist in languages for data structures and functional transformations. When in Clojure, write plain Clojure functions. When in Java, write plain Java classes. No cruft, no inheritance insanity, no ill-defined interfaces. Data in, data out.</p>
</div>
</div>
</div>
<div class="col-md-5">
{% highlight clojure %}
(defn split-into-words [min-chars {:keys [tweet]}]
(->> (clojure.string/split tweet #"\s")
(filter (fn [word] (> (count word) min-chars)))
(map (fn [word] {:word word}))))
{% endhighlight %}
</div>
<div class="col-md-1"></div>
</div>
</div>