2015-05-11 9 views
5

Ben veri büyük miktarda işlemesi gerektiğini bir sistem oluşturma ve grup operatörü azaltmak nasıl anlamamız gerekirYineleyici davranış

Ben GroupBy ve sonradan bir reduceGroup uygulamak bir veri kümesi var çalışır nasıl reduceGroup işlevine iletilen yineleyici davranır? , talep edildiğinde veri yükleyen veya oluşturulduğunda bellekteki tüm verileri hazırlayan istekli bir tembel yineleyici mi?

i Flink Ölçeğin API kullanıyorum 0.9 milestone1

cevap

4

Flink bir çeşit operatörü kullanarak groupReduce için grup tarafından yerine getirir. Sıralama operatörü, sıralama için belirli bir bellek bütçesi alır. Veriler bu bütçeye uyduğu sürece, sıralama bellekte olacaktır. Aksi halde, sıralama harici bir birleştirme sıralamasına dönüşür ve diske dökülebilir. Flink, sıralı veri akışını okur ve "on-the-fly" grubReduce işlevini uygular. Bir grubun verileri, işlev uygulanmadan önce bellekte tamamen okunmaz. Bu nedenle, kullanıcı işlevi grup kayıtlarını kendilememesi durumunda çok büyük grupları işleyebilirsiniz.

+0

İyi, bir sorum var, bu yöntemlerin nasıl çalıştığını açıklayan veya en azından bazı yararlı ipuçları veren herhangi bir belge var mı? buna sahip olmak güzel olurdu. Aslında ben de flink için standart belgeleri bulma bazı sorun var, yani katılmak hakkında biraz daha şüphe var ve olası farklı bir çözüm ile karşılaştırmak –

+1

Flink's internals [wiki] (https: // cwiki) hakkında bir kaç belge var .apache.org/izdiham/görüntü/FLINK/Flink + Internals). Bununla birlikte, işlem operatörlerinin nasıl uygulandığını açıklayan bir şey bulamadım. Flink'te katılımların nasıl yapılabileceği hakkında bir [blog gönderisi] (http://flink.apache.org/news/2015/03/13/peeking-into-Apache-Flinks-Engine-Room.html) bulunmaktadır. faydalı. –

+1

Başka bir [blog yayını] (http://flink.apache.org/news/2015/05/11/Juggling-with-Bits-and-Bytes.html), Flink'in bellek yönetimini ve ikili verilerde nasıl çalıştığını açıklar. –