Utilizzo Spark Streaming per caricare gli eventi di analisi e passare al database Cassandra 2.1+ in cui il modello di dati è simile al seguente:
CREATE TABLE rollup (
metric_1 text,
metric_1_value counter
);
Il problema che mi riguarda è che pre Cassandra 2.1 ci sono stati alcuni problemi riguardanti l'accuratezza dei contatori
Losing some data because of a corrupt sstable or replaying the commit log can lead to invalid counter shards.
Ora per Cassandra 2.1 + lo stato del team datastax
Apache Cassandra 2.1 will have a safer, simpler, and often faster distributed counters implementation.
Tuttavia è abbastanza importante per il mio caso d'uso avere metriche accurate. Forse +/- 1 per ogni 5000-10000 incrementi. Quindi mi restano due scelte progettuali,
- Esegui l'aggiunta di conteggi metrici usando il database Cassandra e presume che sarà per lo più accurato
- Prima leggi le metriche arrotolate usando la scintilla di apache e esegui l'aggiunta usando Apache Spark invece di Cassandra.