2015-05-11 6 views
5

ich ein System erschaffe, die riesige Menge an Daten verarbeiten soll, und ich muss verstehen, wie die Gruppe Bediener reduzieren arbeitetIterator Verhalten in flink reduceGroup

Ich habe einen Datensatz, wo ich eine groupby anwenden und anschließend eine reduceGroup Wie verhält sich der Iterator, der an die Funktion reduceGroup übergeben wird? ist es ein langsamer Iterator, der Daten lädt, wenn sie angefordert werden, oder ein eifriger Iterator, der alle Daten im Speicher vorbereitet, wenn er erstellt wird?

Ich bin mit dem scala api in flink 0,9 milestone1

Antwort

4

Flink führt die Gruppe-by für eine groupReduce eine Art Operator. Der Sortieroperator erhält ein bestimmtes Speicherbudget für die Sortierung. Solange die Daten in dieses Budget passen, erfolgt die Sortierung im Speicher. Andernfalls wird die Sortierung zu einer externen Mischsortierung und wird auf die Festplatte ausgelagert. Flink liest den sortierten Datenstrom und wendet die groupReduce-Funktion "on-the-fly" an. Die Daten einer Gruppe werden nicht vollständig im Speicher gelesen, bevor die Funktion angewendet wird. Daher können Sie sehr große Gruppen verarbeiten, wenn die Benutzerfunktion selbst keine Gruppendatensätze materialisiert.

+0

Gut, ich habe noch eine Frage, gibt es eine Dokumentation, die beschreibt, wie diese Methoden funktionieren oder zumindest einige nützliche Tipps gibt? es wäre schön, es zu haben. Eigentlich habe ich ein Problem, auch die Standarddokumentation für flink zu finden, dh ich habe noch mehr Zweifel über Join und vergleiche es mit einer anderen möglichen Lösung –

+1

Es gibt ein bisschen Dokumentation über Flink's Interna in seinem [Wiki] (https: // cwiki .apache.org/confluence/display/FLINK/Flink + Internals). Ich konnte jedoch nichts finden, das beschreibt, wie die Verarbeitungsoperatoren implementiert werden. Es gibt einen [Blogbeitrag] (http://flink.apache.org/news/2015/03/13/peeking-into-Apache-Flicks-Engine-Room.html) darüber, wie Joins in Flink gemacht werden, was sein könnte hilfreich. –

+1

Ein anderer [Blogbeitrag] (http://flink.apache.org/news/2015/05/11/Juggling-with-Bits-and-Bytes.html) beschreibt Flink's Speicherverwaltung und wie es mit binären Daten arbeitet. –