私は効率的に一緒にApache FLINKを使用して、2つのデータストリームをビュンに興味がある(しかし、同じ問題は、データセットに適用される場合があります)。 (Scalaの表記法を使用して)一例として効率的なジップ(暗黙のキーとしての位置で結合)
Iは
names: DataStream[String]
ages: DataStream[Int]
を有し、私は暗黙非公式(ストリーム内のデータの位置を用いて行われる参加
combined: DataStream[(String, Int)]
を取得します:combined(i) = (names(i), ages(i))
)。私は、各ストリームに「位置」フィールドを追加し、キーとしての位置を使用してそれらを一緒に参加することによって、これを取得することができますが、これは非常に非効率的です。
は、これを行うのいずれかのより良い方法はありますか?ありがとう!
ストリームは(RAM内に嵌合しない)大きいと仮定すると、それらは予測不可能ロードされ(例えば、最初のストリーム1、次に2ストリーム)、FIFOのいずれかが原因オーバーフローこのリードは、結合していない成長しないであろう? – cesco
はい。両方のストリームは(つまり、レコードをバッファリングするのに十分なメモリがあること)オフセット有界で配信されている場合は、このソリューションにのみ動作します。もちろん、メモリ内ではなくディスク上のバッファに、これを拡張することもできます。したがって、固定数のタプルを使用すると、インメモリをバッファし、しきい値を超えるとディスクにスピルします。 –