2017-12-15 4 views
1

Auf der Suche nach Ratschlägen, wo Flink Referenzdaten gespeichert werden sollen. Anwendungsfall hier ist wirklich einfach - ich habe eine einzelne Spalte Textdatei mit einer Liste von Ländern. Ich streame twitter Daten und dann die Länder aus der Textdatei basierend auf dem (geparsten) Standort Feld des tweet. In der IDE (Eclipse) ist alles gut, da ich eine statische ArrayList aufgefüllt habe, wenn die Routine über eine statische Build-Methode in meinem Flink Mapper gestartet wird (dh implementiert Flinks MapFunction). Diese Klasse ist nun innerlich statisch, da sie sonst bei der Serialisierung überhäuft wird. Point ist, wenn die überschriebene Kartenfunktion zur Laufzeit aus dem Stream heraus aufgerufen wird, ist das statische Array der Länderdaten deren wartende, vollständig bevölkerte und bereit zum Abgleich bereitgestellte Daten. Funktioniert ein Charme. ABER, wenn es in einem Flink-Cluster eingesetzt wird (und es hat mich letzte Woche zur Hölle und zurück gebracht, den Code tatsächlich zur FINDUNG der Textdatei zu bekommen), wird das Array nur als Teil der Build-Methode aufgefüllt. Wenn es darum geht, benutzt zu werden, sind die Daten auf mysteriöse Weise verschwunden und ich habe eine Arraygröße von 0 übrig. (Also werden nicht viele Matches gefunden. Also zwei Fragen - warum funktioniert es in Eclipse und nicht auf Deploy (rendert) Viele Eclipse - Unit - Tests sind auch sinnlos.) Oder vielleicht noch allgemeiner gesagt, wie kann man diese Art von statischen, festen Referenzdaten innerhalb von Flink referenzieren (und zwar so, dass sie sowohl in Eclipse als auch in Cluster ...)Flink Referenzdaten Beratung/Best Practice

Antwort

0

der Standardweg statische Referenzdaten zu handhaben ist, die Daten in dem open Verfahren eines RichMapFunction or RichFlatMapFunction zu laden. Rich-Funktionen openclose und Methoden, die geeignet sind, für die Erstellung und lokalen Zustand der Fertigstellung und kann zugreifen der Laufzeitkontext

+0

Perfekt. Die Build-Methode, die die Referenzdaten in die Open-Methode der RichMapFunction eingefügt hat, wurde verschoben. (Ich denke, es ist wahrscheinlich besser, wenn man sich Gedanken darüber macht, dass es sich um eine Art Pre-Flink-Verarbeitung handelt, so dass die Ref-Daten bereits Teil der Daten sind, die Flink von Kafka annimmt - aber es ist immer noch sehr schön, dass das funktioniert. –