Sto costruendo l'elaborazione in tempo reale per rilevare la frode transazione con carta ATM. per rilevare in modo efficiente le frodi, la logica richiede l'ultima data di transazione per carta, somma dell'importo della transazione per giorno (o le ultime 24 ore)Spark Streaming stato storico
Uno dei casi è se la transazione con carta al di fuori del paese nativo per più di 30 giorni dell'ultima transazione in quel paese quindi inviare l'avviso come possibile frode
Così provato a guardare Spark streaming come soluzione. Al fine di raggiungere questo obiettivo (probabilmente mi manca idea di programmazione funzionale) sotto è il mio codice psudo
stream=ssc.receiverStream() //input receiver
s1=stream.mapToPair() // creates key with card and transaction date as value
s2=stream.reduceByKey() // applies reduce operation for last transaction date
s2.checkpoint(new Duration(1000));
s2.persist();
Sono di fronte a due problemi qui
1) come utilizzare questa ultima data della transazione ulteriormente per confronto futuro dalla stessa carta
2) come mantenere i dati così anche se riavviare il programma di guida allora i vecchi valori di s2 ripristina indietro 3) updateStateByKey
può essere utilizzato per mantenere lo stato storico?
Penso che mi manchi il punto chiave dello streaming spark/programmazione funzionale su come implementare questo tipo di logica.
Totalmente perso sulla domanda qui, hai problemi a salvare i dati su un file – aaronman
@aaronman potrebbe non essere così semplice in un ambiente distribuito con un lavoratore che cambia dinamicamente ;-) –
@ om-nom-nom i ' Non è chiaro quale sia il problema, poiché il salvataggio di file in un contesto di streaming consente di salvare un file per ogni Dstream che si elabora senza troppi sforzi – aaronman