2016-06-13 14 views
0

Ich versuche, ein von Datensätzen aus einer KafkaSpout mit Datensätzen in einer Oracle-Tabelle emittiert zu tun join (kein Streaming beitreten)Joining Tupel mit einem RDBMS-Tabelle mit Apache Sturm

Was ist der beste Weg, dies zu implementieren ?

Ich kann einen Cache verwenden, um die Datensätze aus db-Tabelle abzurufen, und dann kann ich eine Verknüpfung jedes Tupel aus dem Auslauf mit den zwischengespeicherten Daten erfolgen.

Möchte Anregungen dazu erhalten.

Antwort

1

Die simples Art und Weise ist eine JDBC-Verbindung zur Datenbank in open() oder prepare() zu öffnen (je nachdem, ob Sie diese in Ausguss oder Bolzen tun wollen) und die Datenbank abfragen für jedes Tupel des entsprechenden beitreten Tupel erhalten verarbeitet werden.

Natürlich können Sie zusätzlich einen Cache (vielleicht einen einfachen HashMap) in Ihrem Auslauf/Schraubencode verwenden, um zu vermeiden, dass dieselben Daten immer wieder abgefragt werden. Dazu würde ich den Cache träge auffüllen und auch die Anzahl der Einträge begrenzen, um Fehler wegen zu wenig Arbeitsspeicher zu vermeiden. Vielleicht möchten Sie die LRU-Strategie implementieren, um Tupel aus Ihrem Cache zu entfernen, falls es das Limit erreicht.