2015-05-11 13 views
5

Io sono la creazione di un sistema che dovrebbe gestire enormi quantità di dati e ho bisogno di capire come il ridurre operatore di gruppo funzionacomportamento Iterator in Flink reduceGroup

Ho un insieme di dati in cui applico un groupby e, successivamente, un reduceGroup Come si comporta l'iteratore passato alla funzione reduceGruppo? è un iteratore pigro che carica i dati quando vengono richiesti o uno desideroso che prepara tutti i dati in memoria quando viene creato?

sto usando l'API Scala di Flink 0,9 milestone1

risposta

4

Flink esegue il gruppo-by per un groupReduce utilizzando un operatore di sorta. L'operatore di ordinamento riceve un determinato budget di memoria per l'ordinamento. Finché i dati rientrano in questo budget, l'ordinamento avverrà in memoria. Altrimenti, l'ordinamento diventa un ordinamento di fusione esterno e si riversa sul disco. Flink legge il flusso di dati ordinato e applica la funzione groupReduce "al volo". I dati di un gruppo non vengono letti completamente in memoria prima dell'applicazione della funzione. Quindi, è possibile elaborare gruppi molto grandi se la funzione utente non materializza i record del gruppo stesso.

+0

Bene, ho ancora una domanda, c'è qualche documentazione che descrive come funzionano questi metodi o fornisce almeno alcuni suggerimenti utili? sarebbe bello averlo In realtà ho qualche problema anche a trovare la documentazione standard per il flink cioè ho qualche dubbio in più sull'unire e confrontarlo con qualche altra possibile soluzione –

+1

C'è un po 'di documentazione sugli interni di Flink nella sua [wiki] (https: // cwiki .apache.org/confluenza/display/FLINK/Flink + Internals). Tuttavia, non sono riuscito a trovare qualcosa che descriva come vengono implementati gli operatori di elaborazione. C'è un [post di blog] (http://flink.apache.org/news/2015/03/13/peeking-into-Apache-Flinks-Engine-Room.html) su come sono fatti i join in Flink che potrebbero essere utile. –

+1

Un altro [post di blog] (http://flink.apache.org/news/2015/05/11/Juggling-with-Bits-and-Bytes.html) descrive la gestione della memoria di Flink e come funziona sui dati binari. –