---
id: "norikra"
type: "component"
kind: "stream-processor"
provider: "default"
category: "messaging"
docs: "https://norikra.github.io/"
url: "https://localhost:3000/catalogue/components/norikra"
---

# Norikra

Schemaless stream processor querying JSON events in memory with Esper EPL.

| | |
|---|---|
| Provider | [default](https://localhost:3000/catalogue?provider=default) |
| Kind | [Stream processor](https://localhost:3000/catalogue/kinds/stream-processor) |
| Category | Messaging |
| Official docs | [https://norikra.github.io/](https://norikra.github.io/) |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `checkpointIntervalSeconds` | integer | — | no | — | inherited |
| `exactlyOnce` | boolean | — | no | false | **false** |
| `instances` | integer | — | no | — | inherited |
| `lateDataPolicy` | enum | `drop`, `shift`, `sideline` | no | — | inherited |
| `managed` | boolean | — | no | false | **false** |
| `persistsToDisk` | boolean | — | no | false | inherited |
| `queryLanguage` | enum | `esper-epl` | no | "esper-epl" | inherited |
| `schemaless` | boolean | — | no | true | inherited |
| `stateBackend` | enum | `memory`, `rocksdb`, `external` | no | "memory" | **"memory"** |
| `watermarkSeconds` | integer | — | no | — | inherited |
| `windowing` | enum | `none`, `event-time`, `processing-time` | no | "none" | inherited |

Bold values are the ones this component pins.

## Rules that apply · 1

### Event-time windows without watermark `windowed-aggregation-without-watermark` (warning)

- Page: https://localhost:3000/catalogue/rules/windowed-aggregation-without-watermark.md
- Why: Event-time windows need a watermark to know when a window is complete. Without one the processor either waits forever or closes windows early and silently drops late events.
- Applies to: every node of kind stream-processor
- Message: Stream processor '{{node.id}}' windows by event time but declares no watermark. Late data handling is undefined.

It fires when:

- all of these hold:
  - the node's `windowing` is "event-time"
  - the node's `watermarkSeconds` has no value

## Other products of the same kind · 33

- [Realtime Compute for Apache Flink](https://localhost:3000/catalogue/components/alibaba-flink.md) `alibaba-flink` — alibabacloud
- [Amazon EventBridge Pipes](https://localhost:3000/catalogue/components/aws-eventbridge-pipes.md) `aws-eventbridge-pipes` — aws
- [Amazon Data Firehose](https://localhost:3000/catalogue/components/aws-firehose.md) `aws-firehose` — aws
- [Amazon Managed Service for Apache Flink](https://localhost:3000/catalogue/components/aws-managed-flink.md) `aws-managed-flink` — aws
- [Amazon OpenSearch Ingestion](https://localhost:3000/catalogue/components/aws-opensearch-ingestion.md) `aws-opensearch-ingestion` — aws
- [Azure Stream Analytics](https://localhost:3000/catalogue/components/azure-stream-analytics.md) `azure-stream-analytics` — azure
- [Cloudflare Logpush](https://localhost:3000/catalogue/components/cloudflare-logpush.md) `cloudflare-logpush` — cloudflare
- [Cloudflare Pipelines](https://localhost:3000/catalogue/components/cloudflare-pipelines.md) `cloudflare-pipelines` — cloudflare
- [Arroyo](https://localhost:3000/catalogue/components/arroyo.md) `arroyo` — default
- [Apache Beam](https://localhost:3000/catalogue/components/beam.md) `beam` — default
- [Bytewax](https://localhost:3000/catalogue/components/bytewax.md) `bytewax` — default
- [Drasi](https://localhost:3000/catalogue/components/drasi.md) `drasi` — default
- [Apache Flink](https://localhost:3000/catalogue/components/flink.md) `flink` — default
- [Kafka Streams](https://localhost:3000/catalogue/components/kafka-streams.md) `kafka-streams` — default
- [ksqlDB](https://localhost:3000/catalogue/components/ksqldb.md) `ksqldb` — default
- [Logstash](https://localhost:3000/catalogue/components/logstash.md) `logstash` — default
- [Materialize](https://localhost:3000/catalogue/components/materialize.md) `materialize` — default
- [Apache NiFi](https://localhost:3000/catalogue/components/nifi.md) `nifi` — default
- [Redpanda Connect](https://localhost:3000/catalogue/components/redpanda-connect.md) `redpanda-connect` — default
- [RisingWave](https://localhost:3000/catalogue/components/risingwave.md) `risingwave` — default
- [Apache Samza](https://localhost:3000/catalogue/components/samza.md) `samza` — default
- [Snowplow](https://localhost:3000/catalogue/components/snowplow.md) `snowplow` — default
- [Spark Structured Streaming](https://localhost:3000/catalogue/components/spark-streaming.md) `spark-streaming` — default
- [Apache Storm](https://localhost:3000/catalogue/components/storm.md) `storm` — default
- [Generic stream processor](https://localhost:3000/catalogue/components/stream-processor.md) `stream-processor` — default
- [Tremor](https://localhost:3000/catalogue/components/tremor.md) `tremor` — default
- [Google Cloud Dataflow](https://localhost:3000/catalogue/components/google-dataflow.md) `google-dataflow` — gcp
- [Manufacturing Data Engine](https://localhost:3000/catalogue/components/google-manufacturing-data-engine.md) `google-manufacturing-data-engine` — gcp
- [Activity Tracker Event Routing](https://localhost:3000/catalogue/components/ibm-activity-tracker-event-routing.md) `ibm-activity-tracker-event-routing` — ibm
- [IBM Cloud Logs Routing](https://localhost:3000/catalogue/components/ibm-logs-routing.md) `ibm-logs-routing` — ibm
- [IBM Cloud Metrics Routing](https://localhost:3000/catalogue/components/ibm-metrics-routing.md) `ibm-metrics-routing` — ibm
- [OCI Connector Hub](https://localhost:3000/catalogue/components/oci-connector-hub.md) `oci-connector-hub` — oci
- [OCI GoldenGate Stream Analytics](https://localhost:3000/catalogue/components/oci-goldengate-stream-analytics.md) `oci-goldengate-stream-analytics` — oci

## Use it in a design

```yaml
nodes:
  - { id: "norikra", component: "norikra" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# Norikra: "Stream processing with SQL for everybody" - a JRuby/JVM server whose queries are "SQL with
# window specifier support (It's actually Esper's EPL)", including joins and subqueries. Input and
# output events are schemaless JSON, and state is memory only: "norikra stores query output events
# into built-in memory pool" and "norikra does not use disks" ("Norikra: Stream processing with SQL
# for everybody"). Windowing is per query, so none is claimed here.
schemaVersion: "1"
type: "component"
id: "norikra"
kind: "stream-processor"
provider: "default"
docs: "https://norikra.github.io/"
defaults:
  managed: false
  stateBackend: "memory"
  exactlyOnce: false
properties:
  schemaless:
    type: "boolean"
    default: true
  persistsToDisk:
    type: "boolean"
    default: false
  queryLanguage:
    type: "enum"
    values: ["esper-epl"]
    default: "esper-epl"
```

Human page: https://localhost:3000/catalogue/components/norikra
