Ich bin Echtzeit-Verarbeitung für die Erkennung von Betrug ATM-Karte Transaktion. Um Betrug effizient zu erkennen, benötigt die Logik das letzte Transaktionsdatum pro Karte, die Summe der Transaktionsmenge nach Tag (oder letzten 24 Stunden) der letzten Transaktion in diesem Land dann Alarm als möglichem Betrug sendenSpark Streaming historischen Zustand
So versuchte Spark-Streaming als eine Lösung zu betrachten. Um diese zu erreichen (wahrscheinlich fehlt mir Idee über funktionale Programmierung) unten ist mein psudo Code
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();
Ich bin vor zwei Problem hier
1), wie diese letzte Transaktionsdatum zu verwenden, weiter zu zukünftiger Vergleich von der gleichen Karte
2) wie man Daten so behält, selbst wenn Antriebsprogramm wieder anstellt dann alte Werte von s2 stellt zurück 3) updateStateByKey
kann benutzt werden, um historischen Zustand beizubehalten?
Ich denke, ich fehlt Schlüsselpunkt des Funken Streaming/funktionale Programmierung, wie diese Art von Logik zu implementieren.
Total verloren auf die Frage hier, haben Sie Probleme beim Speichern der Daten in einer Datei – aaronman
@Aaronman es kann nicht so einfach sein in einer verteilten Umgebung mit einem sich dynamisch ändernden Arbeiter ;-) –
@ om-nom-nom i ' Ich bin einfach nicht klar, was das Problem ist, wie zum Speichern von Dateien in einem Streamkontext Funke können Sie eine Datei für jeden Stream, den Sie ohne zu viel Aufwand – aaronman