Strumenti di opensource per assistenza nel flusso di mining dei punteggi della classifica


12

Prendi in considerazione uno stream contenente tuple che (user, new_score) rappresentano i punteggi degli utenti in un gioco online. Il flusso potrebbe contenere 100-1.000 nuovi elementi al secondo. Il gioco ha giocatori unici da 200K a 300K.

Vorrei avere alcune domande permanenti come:

  1. Quali giocatori hanno pubblicato più di x punteggi in una finestra scorrevole di un'ora
  2. Quali giocatori hanno ottenuto il punteggio x% in una finestra scorrevole di un'ora

La mia domanda è: quali strumenti open source posso utilizzare per avviare questo progetto? Sto considerando Esper al momento.

Nota: ho appena completato la lettura di "Mining Data Streams" (capitolo 4 di Mining of Massive Dataset ) e sono abbastanza nuovo nei flussi di dati di mining.

Risposte:


8

Questa non è una soluzione completa, ma potresti voler esaminare OrientDB come parte del tuo stack. Orient è un server di database Graph-Document scritto interamente in Java.

Nei database dei grafi, le relazioni sono considerate cittadini di prima classe e quindi l'attraversamento di tali relazioni può essere fatto abbastanza rapidamente. Orient è anche un database di documenti che ti consentirebbe il tipo di architettura priva di schemi che ti sembra necessario. Il vero motivo per cui suggerisco Oriente, tuttavia, è a causa della sua estensibilità. Supporta lo streaming tramite socket e l'intero database può essere incorporato in un'altra applicazione. Infine, può essere ridimensionato in modo efficiente e / o può funzionare interamente attraverso la memoria. Quindi, con alcune competenze Java, puoi effettivamente eseguire le tue query preimpostate sul database in memoria.

Stiamo facendo qualcosa di simile. Nel creare un'app / sito per la collaborazione nella ricerca nelle scienze sociali, ci siamo trovati con modelli di dati immensamente complessi. Abbiamo finito per scrivere diverse query usando Gremlin Traversal Language (un sottoinsieme di Groovy, che è, ovviamente, Java al centro), e quindi esponendo tali query attraverso il server di connessione binaria di OrientDB. Pertanto, il client apre un socket TCP, invia un breve messaggio binario e la query viene eseguita in Java direttamente sul database in memoria.

OrientDB supporta anche la scrittura di query di funzioni in Javascript e puoi utilizzare Node.js per interagire direttamente con un'istanza Orient.

Per qualcosa di queste dimensioni, vorrei usare Orient insieme a Hadoop o qualcosa del genere. Puoi anche usare Orient insieme a esper.

Considerare: un'introduzione all'orientamento: http://www.sitepoint.com/a-look-at-orientdb-the-graph-document-nosql/

Query complesse in tempo reale: http://www.gft-blog.com/business-trends/leveraging-real-time-scoring-through-bigdata-to-detect-insurance-fraud/

Una discussione sulle opzioni di streaming con Java e Orient: https://github.com/orientechnologies/orientdb/issues/1227


Grazie per il suggerimento Ho visto neo4j prima ma mai orientdb. Al momento non riesco a immaginare molti vantaggi nel modellare i dati della leadboard come grafico, ma guarderò ancora le opzioni di streaming in orientdb
Tahir Akhtar

4

Di recente ho letto un ottimo articolo che suggerisce di usare Twitter Storm per un'attività che sembra abbastanza simile alla tua.


Ho letto alcune nozioni di base su Apache Storm, sembra che sia preoccupato per i problemi relativi alla scalabilità / affidabilità dell'elaborazione del flusso, lasciandoti a gestire gli algoritmi reali. Esper sull'altro gestisce i dati di processo per te in base alle tue domande
Tahir Akhtar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.