ΠΠ·Π²Π°Π΄ΠΎΠΊ. 5.3. ΠΠ³ΡΠ΅Π³Π°ΡΠΈΡΠ° ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ
ΠΠΎ ΠΎΠ²ΠΎΡ Π΄Π΅Π», ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΈΡΡΡΠ°ΠΆΡΠ²Π°ΠΌΠ΅ Π½Π°ΡΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ Π΄Π΅Π»ΠΎΠ²ΠΈ Π½Π° ΠΠ°ΡΠΊΠ° ΠΏΠΎΡΠΎΡΠΈ. ΠΠΎΡΠ΅Π³Π° Π³ΠΈ ΠΎΠΏΡΠ°ΡΠΈΠ²ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΠΈ Π½Π° ΠΠ°ΡΠΊΠ° ΠΏΠΎΡΠΎΡΠΈ:
- ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°;
- ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΠΎΡΡΠΎΡΠ±Π° Π²ΠΎ ΡΡΡΠΈΠΌΠΈΠ½Π³ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ;
- Π²ΡΡΠ΅ΡΠ΅ Π½Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ° ΡΠΎ ΠΏΠΎΡΠΎΠΊ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ;
- ΡΠ°Π·Π»ΠΈΠΊΠΈ ΠΏΠΎΠΌΠ΅ΡΡ ΠΏΡΠ΅Π½ΠΎΡΠΈΡΠ΅ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ (KStream) ΠΈ Π°ΠΆΡΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΠΊΠΎΠ²ΠΈ (KTable).
ΠΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΡΠ΅ Π³ΠΈ ΡΠΎΠ±Π΅ΡΠ΅ΠΌΠ΅ ΡΠΈΡΠ΅ ΠΎΠ²ΠΈΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π·Π°Π΅Π΄Π½ΠΎ. ΠΠ΅ Π½Π°ΡΡΠΈΡΠ΅ ΠΈ Π·Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅, ΡΡΡΠ΅ Π΅Π΄Π½Π° ΠΎΠ΄Π»ΠΈΡΠ½Π° ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π½Π° ΡΡΡΠΈΠΌΠΈΠ½Π³ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅. ΠΠ°ΡΠΈΠΎΡ ΠΏΡΠ² ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ Π±ΠΈΠ΄Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ°.
5.3.1. ΠΠ³ΡΠ΅Π³Π°ΡΠΈΡΠ° Π½Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±Π°ΡΠ° Π½Π° Π°ΠΊΡΠΈΠΈ ΠΏΠΎ ΠΈΠ½Π΄ΡΡΡΡΠΈΡΠΊΠΈ ΡΠ΅ΠΊΡΠΎΡ
ΠΠ³ΡΠ΅Π³Π°ΡΠΈΡΠ°ΡΠ° ΠΈ Π³ΡΡΠΏΠΈΡΠ°ΡΠ΅ΡΠΎ ΡΠ΅ Π²ΠΈΡΠ°Π»Π½ΠΈ Π°Π»Π°ΡΠΊΠΈ ΠΊΠΎΠ³Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ ΡΠΎ ΡΡΡΠΈΠΌΠΈΠ½Π³ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΡΠΏΠΈΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅ΡΠ½ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠΌΠ°Π°Ρ ΡΠ΅ΡΡΠΎ Π΅ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ. ΠΠ° Π΄Π° ΡΠ΅ ΠΈΠ·Π²Π»Π΅ΡΠ°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ΄ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ Π³ΡΡΠΏΠΈΡΠ°Π°Ρ ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π°Ρ.
ΠΠΎ ΠΎΠ²ΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ Π³ΠΎ ΠΎΠ±Π»Π΅ΡΠ΅ΡΠ΅ ΠΊΠΎΡΡΠΈΠΌΠΎΡ Π½Π° Π΄Π½Π΅Π²Π΅Π½ ΡΡΠ³ΠΎΠ²Π΅Ρ ΠΊΠΎΡ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΡΠ»Π΅Π΄ΠΈ ΠΎΠ±Π΅ΠΌΠΎΡ Π½Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±Π° Π½Π° Π°ΠΊΡΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π²ΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ. ΠΠΎΡΠΎΡΠ½ΠΎ, Π²Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π°Ρ ΠΏΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠΎ Π½Π°ΡΠ³ΠΎΠ»Π΅ΠΌΠ° ΠΏΡΠΎΠ΄Π°ΠΆΠ±Π° Π½Π° Π°ΠΊΡΠΈΠΈ Π²ΠΎ ΡΠ΅ΠΊΠΎΡΠ° ΠΈΠ½Π΄ΡΡΡΡΠΈΡΠ°.
Π’Π°ΠΊΠ²ΠΎΡΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΡΠ΅ Π±Π°ΡΠ° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠ΅ΠΊΠΎΡΠΈ Π·Π° Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π²Π΅Π΄Π°Ρ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π²ΠΎ ΠΏΠΎΡΠ°ΠΊΡΠ²Π°Π½Π°ΡΠ° ΡΠΎΡΠΌΠ° (Π·Π±ΠΎΡΡΠ²Π°ΡΡΠΈ ΠΎΠΏΡΡΠΎ).
- Π‘ΠΎΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΈΠ·Π²ΠΎΡ Π·Π°ΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΠ΅ΠΌΠ° ΠΊΠΎΡ ΠΎΠ±ΡΠ°Π²ΡΠ²Π° Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΡΠ³ΡΠ²Π°ΡΠ΅ ΡΠΎ Π°ΠΊΡΠΈΠΈ. ΠΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΠΌΠ°ΠΏΠΈΡΠ°ΠΌΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΠ΄ ΡΠΈΠΏΠΎΡ StockTransaction Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΠ΄ ΡΠΈΠΏΠΎΡ ShareVolume. ΠΠΎΠ΅Π½ΡΠ°ΡΠ° Π΅ Π΄Π΅ΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ StockTransaction ΡΠΎΠ΄ΡΠΆΠΈ ΠΌΠ΅ΡΠ°ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±Π°, Π½ΠΎ Π½ΠΈ ΡΡΠ΅Π±Π°Π°Ρ ΡΠ°ΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° Π±ΡΠΎΡΠΎΡ Π½Π° ΠΏΡΠΎΠ΄Π°Π΄Π΅Π½ΠΈ Π°ΠΊΡΠΈΠΈ.
- ΠΡΡΠΏΠΈΡΠ°ΡΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ShareVolume ΠΏΠΎ ΡΠΈΠΌΠ±ΠΎΠ» Π½Π° Π°ΠΊΡΠΈΠΈ. ΠΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ Π³ΡΡΠΏΠΈΡΠ°ΡΠ΅ ΠΏΠΎ ΡΠΈΠΌΠ±ΠΎΠ», ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΡΠΎΠ±Π΅ΡΠ΅ΡΠ΅ ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ΠΏΠΎΠ΄Π·Π±ΠΈΡΠΎΠ²ΠΈ ΠΎΠ΄ ΠΎΠ±Π΅ΠΌΠΎΡ Π½Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±Π° Π½Π° Π°ΠΊΡΠΈΠΈ. ΠΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ Π΄Π΅ΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ KStream.groupBy Π²ΡΠ°ΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΊ ΠΎΠ΄ ΡΠΈΠΏΠΎΡ KGroupedStream. Π ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° KTable ΡΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ KGroupedStream.reduce.
Π¨ΡΠΎ Π΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ KGroupedStream
ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ KStream.groupBy ΠΈ KStream.groupByKey Π²ΡΠ°ΡΠ°Π°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΊ ΠΎΠ΄ KGroupedStream. KGroupedStream Π΅ ΡΡΠ΅Π΄Π½ΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅ΠΊ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ ΠΏΠΎ Π³ΡΡΠΏΠΈΡΠ°ΡΠ΅ ΠΏΠΎ ΠΊΠΎΠΏΡΠΈΡΠ°. ΠΠΎΠΎΠΏΡΡΠΎ Π½Π΅ Π΅ Π½Π°ΠΌΠ΅Π½Π΅Ρ Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° ΡΠΎ Π½Π΅Π³ΠΎ. ΠΠ°ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ°, KGroupedStream ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ°, ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π΅ ΡΠ΅ΠΊΠΎΠ³Π°Ρ KTable. Π Π±ΠΈΠ΄Π΅ΡΡΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΡ ΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ Π΅ KTable ΠΈ ΡΠΈΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π΄ΡΠΆΠ°Π²Π½Π° ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΡΠΈΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°ΡΠ° ΠΊΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π΄Π° Π½Π΅ ΡΠ΅ ΠΈΡΠΏΡΠ°ΡΠ°Π°Ρ ΠΏΠΎΠ½Π°ΡΠ°ΠΌΡ Π½ΠΈΠ· Π³Π°ΡΠΎΠ²ΠΎΠ΄ΠΎΡ.
ΠΠ΅ΡΠΎΠ΄ΠΎΡ KTable.groupBy Π²ΡΠ°ΡΠ° ΡΠ»ΠΈΡΠ½Π° KGroupedTable - ΡΡΠ΅Π΄Π½ΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΡ Π½Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ°, ΠΏΡΠ΅Π³ΡΡΠΏΠΈΡΠ°Π½ΠΈ ΠΏΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΈ.
ΠΡΠ΄Π΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΠΌΠ°Π»Π° ΠΏΠ°ΡΠ·Π° ΠΈ Π΄Π° ΡΠ° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ Π‘Π». 5.9, ΡΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π° ΡΡΠΎ ΠΏΠΎΡΡΠΈΠ³Π½Π°Π²ΠΌΠ΅. ΠΠ²Π°Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° Π²Π΅ΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° Π²ΠΈ Π±ΠΈΠ΄Π΅ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠ·Π½Π°ΡΠ°.
ΠΡΠ΄Π΅ ΡΠ΅Π³Π° Π΄Π° Π³ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ ΠΊΠΎΠ΄ΠΎΡ Π·Π° ΠΎΠ²Π°Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° (ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΄Π΅ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° src/main/java/bbejeck/chapter_5/AggregationsAndReducingExample.java) (Π‘ΠΏΠΈΡΠΎΠΊ 5.2).
ΠΠ°Π΄Π΅Π½ΠΈΠΎΡ ΠΊΠΎΠ΄ ΡΠ΅ ΠΎΠ΄Π»ΠΈΠΊΡΠ²Π° ΡΠΎ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΠΊΡΠ°ΡΠΊΠΎΡΡ ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈΠΎΡ ΠΎΠ±Π΅ΠΌ Π½Π° Π΄Π΅ΡΡΡΠ²Π° ΠΈΠ·Π²ΡΡΠ΅Π½ΠΈ Π²ΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠ΅Π΄ΠΎΠ²ΠΈ. ΠΠΎΠΆΠ΅ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅ Π½Π΅ΡΡΠΎ Π½ΠΎΠ²ΠΎ Π²ΠΎ ΠΏΡΠ²ΠΈΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ builder.stream: Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΎΠ΄ ΡΠΈΠΏΠΎΡ enum AutoOffsetReset.EARLIEST (ΠΈΠΌΠ° ΠΈ ΠΠΠΠΠΠΠ), ΠΏΠΎΡΡΠ°Π²Π΅Π½Π° ΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ Consumed.withOffsetResetPolicy. ΠΠ²ΠΎΡ ΡΠΈΠΏ Π½Π° Π½Π°Π±ΡΠΎΡΡΠ²Π°ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ° Π·Π° ΡΠ΅ΡΠ΅ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ Π·Π° ΡΠ΅ΠΊΠΎΡ KStream ΠΈΠ»ΠΈ KTable ΠΈ ΠΈΠΌΠ° ΠΏΡΠ΅Π΄Π½ΠΎΡΡ ΠΏΡΠ΅Π΄ ΠΎΠΏΡΠΈΡΠ°ΡΠ° Π·Π° ΡΠ΅ΡΠ΅ΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ ΠΎΠ΄ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ°.
GroupByKey ΠΈ GroupBy
ΠΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ KStream ΠΈΠΌΠ° Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° Π³ΡΡΠΏΠΈΡΠ°ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ: GroupByKey ΠΈ GroupBy. Π Π΄Π²Π°ΡΡΠ°ΡΠ° Π²ΡΠ°ΡΠ°Π°Ρ KGroupedTable, ΠΏΠ° ΠΌΠΎΠΆΠ΅Π±ΠΈ ΡΠ΅ ΠΏΡΠ°ΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΡΠ° Π΅ ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ Π½ΠΈΠ² ΠΈ ΠΊΠΎΠ³Π° Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠΎΡ?
ΠΠ΅ΡΠΎΠ΄ΠΎΡ GroupByKey ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠΎΠ³Π° ΠΊΠ»ΡΡΠ΅Π²ΠΈΡΠ΅ Π²ΠΎ KStream Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΡΠ°Π·Π½ΠΈ. Π ΡΡΠΎ Π΅ Π½Π°ΡΠ²Π°ΠΆΠ½ΠΎ, Π·Π½Π°ΠΌΠ΅ΡΠΎ βΠ±Π°ΡΠ° ΠΏΠΎΠ²ΡΠΎΡΠ½Π° ΠΏΠ°ΡΡΠΈΡΠΈΡΠ°β Π½ΠΈΠΊΠΎΠ³Π°Ρ Π½Π΅ Π±Π΅ΡΠ΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΎ.
ΠΠ΅ΡΠΎΠ΄ΠΎΡ GroupBy ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΡΠ²Π° Π΄Π΅ΠΊΠ° ΡΡΠ΅ Π³ΠΈ ΡΠΌΠ΅Π½ΠΈΠ»Π΅ ΠΊΠ»ΡΡΠ΅Π²ΠΈΡΠ΅ Π·Π° Π³ΡΡΠΏΠΈΡΠ°ΡΠ΅, ΡΠ°ΠΊΠ° ΡΡΠΎ Π·Π½Π°ΠΌΠ΅ΡΠΎ Π·Π° ΠΏΠΎΠ²ΡΠΎΡΠ½Π° ΠΏΠ°ΡΡΠΈΡΠΈΡΠ° Π΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΎ Π½Π° ΡΠΎΡΠ½ΠΎ. ΠΡΡΠ΅ΡΠ΅ΡΠΎ ΡΠΏΠΎΡΡΠ²Π°ΡΠ°, Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ ΠΈΡΠ½. ΠΏΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ GroupBy ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ° ΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΠ°ΡΡΠΈΡΠΈΠΎΠ½ΠΈΡΠ°ΡΠ΅.
Π Π΅Π·ΠΈΠΌΠ΅: Π‘Π΅ΠΊΠΎΠ³Π°Ρ ΠΊΠΎΠ³Π° Π΅ ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠ΅Π±Π° Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ GroupByKey Π½Π°ΠΌΠ΅ΡΡΠΎ GroupBy.
ΠΠ°ΡΠ½ΠΎ Π΅ ΡΡΠΎ ΠΏΡΠ°Π²Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ mapValues ββΠΈ groupBy, ΠΏΠ° Π°ΡΠ΄Π΅ Π΄Π° Π³ΠΎ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ sum() (ΡΠ΅ Π½Π°ΠΎΡΠ° Π²ΠΎ src/main/java/bbejeck/model/ShareVolume.java) (Π‘ΠΏΠΈΡΠΎΠΊ 5.3).
ΠΠ΅ΡΠΎΠ΄ΠΎΡ ShareVolume.sum Π³ΠΎ Π²ΡΠ°ΡΠ° Π²ΠΊΡΠΏΠ½ΠΈΠΎΡ Π±ΡΠΎΡ Π½Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±ΠΈ Π½Π° Π°ΠΊΡΠΈΠΈ, Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΡ ΠΎΠ΄ ΡΠ΅Π»ΠΈΠΎΡ ΡΠΈΠ½ΡΠΈΡ Π½Π° ΠΏΡΠ΅ΡΠΌΠ΅ΡΠΊΠΈ Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ KTable . Π‘Π΅Π³Π° ΡΠ° ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΎΠ³Π°ΡΠ° ΡΡΠΎ ΡΠ° ΠΈΠ³ΡΠ° KTable. ΠΠΎΠ³Π° ΡΠ΅ ΠΏΡΠΈΡΡΠΈΠ³Π½Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ ShareVolume, ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ KTable Π³ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ° Π½Π°ΡΠ½ΠΎΠ²ΠΎΡΠΎ ΡΠ΅ΠΊΠΎΠ²Π½ΠΎ Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅. ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠ°ΠΌΠ΅ΡΠΈ Π΄Π΅ΠΊΠ° ΡΠΈΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°ΡΠ° ΡΠ΅ ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΡΠ°Π°Ρ Π²ΠΎ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½Π°ΡΠ° shareVolumeKTable, Π½ΠΎ Π½Π΅ ΡΠΈΡΠ΅ ΡΠ΅ ΠΈΡΠΏΡΠ°ΡΠ°Π°Ρ ΠΏΠΎΠ½Π°ΡΠ°ΠΌΡ.
ΠΠΎΡΠΎΠ° ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΎΠ²Π°Π° ΡΠ°Π±Π΅Π»Π° Π·Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ° (ΠΏΠΎ Π±ΡΠΎΡ Π½Π° Π°ΠΊΡΠΈΠΈ ΡΠΎ ΠΊΠΎΠΈ ΡΠ΅ ΡΡΠ³ΡΠ²Π°) Π·Π° Π΄Π° Π΄ΠΎΡΠ΄Π΅ΠΌΠ΅ Π΄ΠΎ ΠΏΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠΎ Π½Π°ΡΠ³ΠΎΠ»Π΅ΠΌ ΠΎΠ±Π΅ΠΌ Π½Π° Π°ΠΊΡΠΈΠΈ ΡΠΎ ΠΊΠΎΠΈ ΡΠ΅ ΡΡΠ³ΡΠ²Π° Π²ΠΎ ΡΠ΅ΠΊΠΎΡΠ° ΠΈΠ½Π΄ΡΡΡΡΠΈΡΠ°. ΠΠ°ΡΠΈΡΠ΅ Π°ΠΊΡΠΈΠΈ Π²ΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ ΡΠ»ΠΈΡΠ½ΠΈ Π½Π° ΠΎΠ½ΠΈΠ΅ Π·Π° ΠΏΡΠ²Π°ΡΠ° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ°.
- ΠΠ·Π²Π΅Π΄Π΅ΡΠ΅ Π΄ΡΡΠ³Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° groupBy Π·Π° Π΄Π° Π³ΡΡΠΏΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅ΡΠ½ΠΈ ShareVolume ΠΎΠ±ΡΠ΅ΠΊΡΠΈ ΠΏΠΎ ΠΈΠ½Π΄ΡΡΡΡΠΈΡΠ°.
- ΠΠ°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΡΠΎ ΡΡΠΌΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Π½Π° ShareVolume. ΠΠ²ΠΎΡ ΠΏΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ Π·Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ Π΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½Π° ΡΠ΅Π΄ΠΈΡΠ° ΡΠΎ ΡΠΈΠΊΡΠ½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°. ΠΠΎ ΠΎΠ²Π°Π° ΡΠ΅Π΄ΠΈΡΠ° ΡΠΎ ΡΠΈΠΊΡΠ½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° ΡΠ΅ Π·Π°Π΄ΡΠΆΠ°Π½ΠΈ ΡΠ°ΠΌΠΎ ΠΏΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠΎ Π½Π°ΡΠ³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ»ΠΈΡΠΈΠ½ΠΈ ΠΏΡΠΎΠ΄Π°Π΄Π΅Π½ΠΈ Π°ΠΊΡΠΈΠΈ.
- ΠΠ°ΠΏΠΈΡΠ°ΡΡΠ΅ Π³ΠΈ ΡΠ΅Π΄ΠΈΡΠΈΡΠ΅ ΠΎΠ΄ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈΠΎΡ ΠΏΠ°ΡΡΡ Π½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π½Π° Π½ΠΈΠ·Π°ΡΠ° ΠΈ Π²ΡΠ°ΡΠ΅ΡΠ΅ Π³ΠΈ ΠΏΡΠ²ΠΈΡΠ΅ ΠΏΠ΅Ρ Π½Π°ΡΡΡΠ³ΡΠ²Π°Π½ΠΈ Π°ΠΊΡΠΈΠΈ ΠΏΠΎ Π±ΡΠΎΡ ΠΏΠΎ ΠΈΠ½Π΄ΡΡΡΡΠΈΡΠ°.
- ΠΠ°ΠΏΠΈΡΠ΅ΡΠ΅ Π³ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ Π²ΠΎ ΡΡΡΠΈΠ½Π³ ΡΠΎΡΠΌΠ° Π½Π° ΡΠ΅ΠΌΠ°ΡΠ°.
ΠΠ° ΡΠ». Π‘Π»ΠΈΠΊΠ° 5.10 Π³ΠΎ ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π° Π³ΡΠ°ΡΠΈΠΊΠΎΡ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΡ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠ°ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅, Π²ΡΠΎΡΠΈΠΎΡ ΠΊΡΡΠ³ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½.
Π‘Π΅Π³Π° ΠΊΠΎΠ³Π° ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°ΡΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅ Π·Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΎΠ²ΠΎΡ Π²ΡΠΎΡ ΠΊΡΡΠ³ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΈΠΌΠ΅ ΠΊΠΎΠ½ Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ ΠΈΠ·Π²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ (ΡΠ΅ Π³ΠΎ Π½Π°ΡΠ΄Π΅ΡΠ΅ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° src/main/java/bbejeck/chapter_5/AggregationsAndReducingExample.java) (Π‘ΠΏΠΈΡΠΎΠΊ 5.4) .
ΠΠ²ΠΎΡ ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠΎΠ΄ΡΠΆΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° fixedQueue. ΠΠ²Π° Π΅ ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΡ Π΅ Π°Π΄Π°ΠΏΡΠ΅Ρ Π·Π° java.util.TreeSet ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π½Π° Π²ΡΠ²Π½ΠΈΡΠ΅ N ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΏΠΎ ΠΎΠΏΠ°ΡΠ°ΡΠΊΠΈ ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄ Π½Π° Π°ΠΊΡΠΈΠΈΡΠ΅ ΡΠΎ ΠΊΠΎΠΈ ΡΠ΅ ΡΡΠ³ΡΠ²Π°.
ΠΠ΅ΡΠ΅ ΡΡΠ΅ Π³ΠΈ Π²ΠΈΠ΄Π΅Π»Π΅ ΠΏΠΎΠ²ΠΈΡΠΈΡΠ΅ groupBy ΠΈ mapValues, ΡΠ°ΠΊΠ° ΡΡΠΎ Π½Π΅ΠΌΠ° Π΄Π° Π½Π°Π²Π»Π΅Π³ΡΠ²Π°ΠΌΠ΅ Π²ΠΎ Π½ΠΈΠ² (Π³ΠΎ Π½Π°ΡΠ΅ΠΊΡΠ²Π°ΠΌΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ KTable.toStream Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ KTable.print Π΅ Π·Π°ΡΡΠ°ΡΠ΅Π½). ΠΠΎ, ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΡΡΠ΅ ΡΠ° Π²ΠΈΠ΄Π΅Π»Π΅ Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° KTable Π½Π° aggregate(), ΠΏΠ° ΡΠ΅ ΠΏΠΎΡΡΠΎΡΠΈΠΌΠ΅ ΠΌΠ°Π»ΠΊΡ Π²ΡΠ΅ΠΌΠ΅ Π·Π° Π΄Π° ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°ΠΌΠ΅ Π·Π° ΡΠΎΠ°.
ΠΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π°ΡΠ΅, ΠΎΠ½Π° ΡΡΠΎ Π³ΠΎ ΠΏΡΠ°Π²ΠΈ KTable ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Π΅ ΡΠΎΠ° ΡΡΠΎ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ ΡΠΎ ΠΈΡΡΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΈ ΡΠ΅ ΡΠΌΠ΅ΡΠ°Π°Ρ Π·Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ°. KTable Π³ΠΎ Π·Π°ΠΌΠ΅Π½ΡΠ²Π° ΡΡΠ°ΡΠΈΠΎΡ Π·Π°ΠΏΠΈΡ ΡΠΎ Π½ΠΎΠ². ΠΠ³ΡΠ΅Π³ΠΈΡΠ°ΡΠ΅ΡΠΎ ΡΠ΅ ΡΠ»ΡΡΡΠ²Π° Π½Π° ΡΠ»ΠΈΡΠ΅Π½ Π½Π°ΡΠΈΠ½: ΡΠ΅ ΡΠΎΠ±ΠΈΡΠ°Π°Ρ Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΡΠΎ ΠΈΡΡΠΈΠΎΡ ΠΊΠ»ΡΡ. ΠΠΎΠ³Π° ΡΠ΅ ΠΏΡΠΈΡΡΠΈΠ³Π½Π΅ Π·Π°ΠΏΠΈΡΠΎΡ, ΡΠΎΡ ΡΠ΅ Π΄ΠΎΠ΄Π°Π²Π° Π²ΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠ°ΡΠ° Π½Π° ΠΊΠ»Π°ΡΠ°ΡΠ° FixedSizePriorityQueue ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΡΠΎΠ±ΠΈΡΠ°Ρ (Π²ΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ Π²ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠΎΡ Π½Π° Π·Π±ΠΈΡΠ½ΠΈΠΎΡ ΠΌΠ΅ΡΠΎΠ΄), Π½ΠΎ Π°ΠΊΠΎ Π²Π΅ΡΠ΅ ΠΏΠΎΡΡΠΎΠΈ Π΄ΡΡΠ³ Π·Π°ΠΏΠΈΡ ΡΠΎ ΠΈΡΡΠΈΠΎΡ ΠΊΠ»ΡΡ, ΡΠΎΠ³Π°Ρ ΡΡΠ°ΡΠΈΠΎΡ Π·Π°ΠΏΠΈΡ ΡΠ΅ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π° ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΠΎΠ΄Π·Π΅ΠΌΠ°Ρ (ΡΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ Π²ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠΎΡ Π½Π° Π°Π³ΡΠ΅Π³Π°ΡΠ½ΠΈΠΎΡ ΠΌΠ΅ΡΠΎΠ΄).
Π‘Π΅ΡΠΎ ΠΎΠ²Π° Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° Π½Π°ΡΠΈΠΎΡ Π°Π³ΡΠ΅Π³Π°ΡΠΎΡ, FixedSizePriorityQueue, Π½Π΅ Π³ΠΈ ΡΠΎΠ±ΠΈΡΠ° ΡΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΡΠΎ Π΅Π΄Π΅Π½ ΠΊΠ»ΡΡ, ΡΡΠΊΡ ΡΠΊΠ»Π°Π΄ΠΈΡΠ° Π΄Π²ΠΈΠΆΠ΅ΡΠΊΠ° ΡΡΠΌΠ° ΠΎΠ΄ ΠΊΠΎΠ»ΠΈΡΠΈΠ½ΠΈΡΠ΅ Π½Π° N Π½Π°ΡΡΡΠ³ΡΠ²Π°Π½ΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²ΠΈ Π°ΠΊΡΠΈΠΈ. Π‘Π΅ΠΊΠΎΡ Π²Π»Π΅Π·Π΅Π½ Π·Π°ΠΏΠΈΡ Π³ΠΎ ΡΠΎΠ΄ΡΠΆΠΈ Π²ΠΊΡΠΏΠ½ΠΈΠΎΡ Π±ΡΠΎΡ Π½Π° ΠΏΡΠΎΠ΄Π°Π΄Π΅Π½ΠΈ Π°ΠΊΡΠΈΠΈ Π΄ΠΎΡΠ΅Π³Π°. KTable ΡΠ΅ Π²ΠΈ Π΄Π°Π΄Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° Π°ΠΊΡΠΈΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈΡΠ΅ ΠΊΠΎΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ ΡΠ΅ Π½Π°ΡΡΡΠ³ΡΠ²Π°Π½ΠΈ, Π±Π΅Π· Π΄Π° ΡΠ΅ Π±Π°ΡΠ° ΡΡΠΊΠ°Π»Π°ΡΠΊΠ° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ° Π½Π° ΡΠ΅ΠΊΠΎΠ΅ Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅.
ΠΠ°ΡΡΠΈΠ²ΠΌΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌΠ΅ Π΄Π²Π΅ Π²Π°ΠΆΠ½ΠΈ ΡΠ°Π±ΠΎΡΠΈ:
- Π³ΡΡΠΏΠΈΡΠ°ΡΡΠ΅ Π³ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ Π²ΠΎ KTable ΡΠΎ Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠΈ ΠΊΠ»ΡΡ;
- Π²ΡΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠ²ΠΈΠ΅ Π³ΡΡΠΏΠΈΡΠ°Π½ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ.
ΠΠ½Π°Π΅ΡΠ΅ΡΠΎ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Ρ ΠΎΠ²ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΅ Π²Π°ΠΆΠ½ΠΎ Π·Π° Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ Π·Π½Π°ΡΠ΅ΡΠ΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΡΡΠΎ ΡΠ΅ Π΄Π²ΠΈΠΆΠ°Ρ Π½ΠΈΠ· Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΠ°ΡΠΊΠ° ΡΡΡΠΈΠΌΡ ΠΈ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ°Ρ ΠΊΠ°ΠΊΠ²ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΈΠ΅ Π½ΠΎΡΠ°Ρ.
ΠΡΡΠΎ ΡΠ°ΠΊΠ°, ΡΠΎΠ±ΡΠ°Π²ΠΌΠ΅ Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ ΠΊΠ»ΡΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈ Π΄ΠΈΡΠΊΡΡΠΈΡΠ°Π½ΠΈ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ Π²ΠΎ ΠΎΠ²Π°Π° ΠΊΠ½ΠΈΠ³Π°. ΠΠΎ ΠΏΠΎΠ³Π»Π°Π²ΡΠ΅ 4, ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°Π²ΠΌΠ΅ Π·Π° ΡΠΎΠ° ΠΊΠΎΠ»ΠΊΡ Π΅ Π²Π°ΠΆΠ½Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π° ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ½Π° Π·Π° Π³ΡΠ΅ΡΠΊΠΈ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° ΡΡΡΠΈΠΌΠΈΠ½Π³. ΠΡΠ²ΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΎ ΠΎΠ²Π° ΠΏΠΎΠ³Π»Π°Π²ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ° Π·ΠΎΡΡΠΎ Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° Π΄ΡΠΆΠ°Π²Π° Π΅ ΡΠΎΠ»ΠΊΡ Π²Π°ΠΆΠ½Π° - Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΈ ΡΠ»Π΅Π΄ΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈΡΠ΅ ΡΡΠΎ Π²Π΅ΡΠ΅ ΡΡΠ΅ Π³ΠΈ Π²ΠΈΠ΄Π΅Π»Π΅. ΠΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ Π³ΠΈ ΠΈΠ·Π±Π΅Π³Π½ΡΠ²Π° Π΄ΠΎΡΠ½Π΅ΡΠ°ΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ°, ΡΡΠΎ ΡΠ° ΠΏΡΠ°Π²ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΏΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½Π° ΠΈ ΠΏΠΎΠΎΡΠΏΠΎΡΠ½Π° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ.
ΠΠΎΠ³Π° Π²ΡΡΠΈΡΠ΅ ΠΊΠ°ΠΊΠ²Π° Π±ΠΈΠ»ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° Π·Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΈΠ»ΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅, ΠΌΠΎΡΠ° Π΄Π° Π³ΠΎ Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΄ΡΠΆΠ°Π²Π½Π°ΡΠ° ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ°. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ Π²ΡΠ°ΡΠ°Π°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΊ Π½Π° KTable, Π° KTable ΠΊΠΎΡΠΈΡΡΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΎΡΡΠΎΡΠ±ΠΈ Π·Π° Π΄Π° Π³ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΡΠΎ Π½ΠΎΠ²ΠΈ. ΠΠ°ΠΊΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΎΠ²ΡΠ΅, Π½Π΅ ΡΠ΅ ΠΈΡΠΏΡΠ°ΡΠ°Π°Ρ ΡΠΈΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°ΡΠ° ΠΏΠΎ ΡΠ΅Π²ΠΊΠΎΠ²ΠΎΠ΄ΠΎΡ, ΠΈ ΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ Π·Π°ΡΠΎΠ° ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ° ΡΠ΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ΠΈ Π΄Π° ΠΏΡΠΎΠ΄ΡΡΠΈΡΠ°Π°Ρ ΡΠ΅Π·ΠΈΠΌΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠΊΠΎ Π½Π΅ ΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π°, KTable ΡΠ΅ Π³ΠΈ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈ ΡΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΎΠ΄ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅.
Π‘Π»Π΅Π΄Π½ΠΎ, ΡΠ΅ Π³ΠΎ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ° Π²ΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ - ΡΠ°ΠΊΠ°Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ.
5.3.2. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ
ΠΠΎ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈΠΎΡ Π΄Π΅Π», Π²ΠΎΠ²Π΅Π΄ΠΎΠ²ΠΌΠ΅ Π»ΠΈΠ·Π³Π°ΡΠΊΠ° ΠΊΠΎΠ½Π²ΠΎΠ»ΡΡΠΈΡΠ° ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ°. ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΈΠ·Π²ΡΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½ΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±ΠΈΡΠ΅ Π½Π° Π°ΠΊΡΠΈΠΈ ΠΏΡΠΎΡΠ»Π΅Π΄Π΅Π½ΠΎ ΡΠΎ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ° Π½Π° ΠΏΠ΅ΡΡΠ΅ Π½Π°ΡΡΡΠ³ΡΠ²Π°Π½ΠΈ Π°ΠΊΡΠΈΠΈ Π½Π° Π±Π΅ΡΠ·Π°ΡΠ°.
ΠΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ Π΅ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΎ ΡΠ°ΠΊΠ²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½ΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅. Π ΠΏΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ ΡΡΠ΅Π±Π° Π΄Π° Π²ΡΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ°ΠΌΠΎ Π²ΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅ΡΠΌΠ΅ΡΠ°ΡΡΠ΅ ΠΊΠΎΠ»ΠΊΡ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΡΠΎ Π°ΠΊΡΠΈΠΈ Π½Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠ° Π²ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ 10 ΠΌΠΈΠ½ΡΡΠΈ. ΠΠ»ΠΈ ΠΊΠΎΠ»ΠΊΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΊΠ»ΠΈΠΊΠ½Π°Π»Π΅ Π½Π° Π½ΠΎΠ² ΡΠ΅ΠΊΠ»Π°ΠΌΠ΅Π½ Π±Π°Π½Π΅Ρ Π²ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ 15 ΠΌΠΈΠ½ΡΡΠΈ. ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΡΡΠΈ ΡΠ°ΠΊΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠ°ΡΠΈ, Π½ΠΎ ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΊΠΎΠΈ ΡΠ΅ ΠΎΠ΄Π½Π΅ΡΡΠ²Π°Π°Ρ ΡΠ°ΠΌΠΎ Π½Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈ (Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ).
ΠΡΠ΅Π±ΡΠΎΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΠΌΠ΅Π½Π° ΠΏΠΎ ΠΊΡΠΏΡΠ²Π°Ρ
ΠΠΎ ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ Π³ΠΈ ΡΠ»Π΅Π΄ΠΈΠΌΠ΅ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈΡΠ΅ ΡΠΎ Π°ΠΊΡΠΈΠΈ ΠΌΠ΅ΡΡ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠ³ΠΎΠ²ΡΠΈ - Π±ΠΈΠ»ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»Π½ΠΈ ΡΠΈΠ½Π°Π½ΡΠΈΠ΅ΡΠΈ.
ΠΠΎΡΡΠΎΡΠ°Ρ Π΄Π²Π΅ ΠΌΠΎΠΆΠ½ΠΈ ΠΏΡΠΈΡΠΈΠ½ΠΈ Π·Π° ΠΎΠ²Π° ΡΠ»Π΅Π΄Π΅ΡΠ΅. ΠΠ΄Π΅Π½ ΠΎΠ΄ Π½ΠΈΠ² Π΅ ΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π΄Π° ΡΠ΅ Π·Π½Π°Π΅ ΡΡΠΎ ΠΊΡΠΏΡΠ²Π°Π°Ρ/ΠΏΡΠΎΠ΄Π°Π²Π°Π°Ρ Π»ΠΈΠ΄Π΅ΡΠΈΡΠ΅ Π½Π° ΠΏΠ°Π·Π°ΡΠΎΡ. ΠΠΊΠΎ ΠΎΠ²ΠΈΠ΅ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΈΠ³ΡΠ°ΡΠΈ ΠΈ ΡΠΎΡΠΈΡΡΠΈΡΠΈΡΠ°Π½ΠΈ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΡΠΈ Π²ΠΈΠ΄Π°Ρ ΠΌΠΎΠΆΠ½ΠΎΡΡ, ΠΈΠΌΠ° ΡΠΌΠΈΡΠ»Π° Π΄Π° ΡΠ΅ ΡΠ»Π΅Π΄ΠΈ Π½ΠΈΠ²Π½Π°ΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ°. ΠΡΠΎΡΠ°ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π° Π΅ ΠΆΠ΅Π»Π±Π°ΡΠ° Π΄Π° ΡΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠ°Ρ ΠΊΠ°ΠΊΠ²ΠΈ Π±ΠΈΠ»ΠΎ ΠΌΠΎΠΆΠ½ΠΈ Π·Π½Π°ΡΠΈ Π½Π° Π½Π΅Π»Π΅Π³Π°Π»Π½ΠΎ ΡΡΠ³ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΈΠ½ΡΠ°ΡΠ΄Π΅ΡΠΈ. ΠΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°, ΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΡΠ΅Π»Π°ΡΠΈΡΠ°ΡΠ° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΠΏΡΠΎΠ΄Π°ΠΆΠ½ΠΈ ΡΠΊΠΎΠΊΠΎΠ²ΠΈ ΡΠΎ Π²Π°ΠΆΠ½ΠΈ ΡΠΎΠΎΠΏΡΡΠ΅Π½ΠΈΡΠ° Π·Π° ΠΏΠ΅ΡΠ°ΡΠΎΡ.
Π’Π°ΠΊΠ²ΠΎΡΠΎ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΡΠ΅ ΡΠΎΡΡΠΎΠΈ ΠΎΠ΄ ΡΠ»Π΅Π΄Π½ΠΈΠ²Π΅ ΡΠ΅ΠΊΠΎΡΠΈ:
- ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΡΡΠΈΠΌ Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΎΠ΄ ΡΠ΅ΠΌΠ°ΡΠ° Π±Π΅ΡΠ·Π°Π½ΡΠΊΠΈ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ;
- Π³ΡΡΠΏΠΈΡΠ°ΡΠ΅ Π½Π° Π΄ΠΎΡΠ΄ΠΎΠ²Π½ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎ ID Π½Π° ΠΊΡΠΏΡΠ²Π°ΡΠΎΡ ΠΈ ΡΠΈΠΌΠ±ΠΎΠ» Π½Π° Π°ΠΊΡΠΈΠΈ. ΠΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ groupBy Π²ΡΠ°ΡΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠ° ΠΎΠ΄ ΠΊΠ»Π°ΡΠ°ΡΠ° KGroupedStream;
- ΠΠ΅ΡΠΎΠ΄ΠΎΡ KGroupedStream.windowedBy Π²ΡΠ°ΡΠ° ΠΏΡΠΎΡΠΎΠΊ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ, ΡΡΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ° ΡΠΎ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ. ΠΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΡΠΈΠΏΠΎΡ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠΎΡ, ΡΠ΅ Π²ΡΠ°ΡΠ° ΠΈΠ»ΠΈ TimeWindowedKStream ΠΈΠ»ΠΈ SessionWindowedKStream;
- Π±ΡΠΎΡ Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ°. ΠΡΠΎΠ·ΠΎΡΠ΅ΡΠΎΡ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΡ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π° Π΄Π°Π»ΠΈ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ Π·Π°ΠΏΠΈΡ Π΅ Π·Π΅ΠΌΠ΅Π½ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π²ΠΎ ΠΎΠ²Π°Π° Π±ΡΠΎΡΠΊΠ°;
- ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π½Π° ΡΠ΅ΠΌΠ° ΠΈΠ»ΠΈ Π½ΠΈΠ²Π½ΠΎ Π΅ΠΌΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·Π²ΠΎΡΠΎΡ.
Π’ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ°ΡΠ° Π½Π° ΠΎΠ²Π°Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π°, Π½ΠΎ ΡΠ°ΡΠ½Π°ΡΠ° ΡΠ»ΠΈΠΊΠ° Π·Π° Π½Π΅Π° Π±ΠΈ Π±ΠΈΠ»Π° ΠΊΠΎΡΠΈΡΠ½Π°. ΠΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ Π½Π° Π‘Π». 5.11.
Π‘Π»Π΅Π΄Π½ΠΎ, ΡΠ΅ ΡΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠΎΡ ΠΈ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄.
ΠΠΈΠ΄ΠΎΠ²ΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ
ΠΠΎΡΡΠΎΡΠ°Ρ ΡΡΠΈ ΡΠΈΠΏΠ° Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π²ΠΎ ΠΠ°ΡΠΊΠ° ΠΏΠΎΡΠΎΡΠΈ:
- ΡΠ΅ΡΠΈΡΠΊΠΈ;
- βΠΏΡΠ΅Π²ΡΡΡΠ²Π°ΡΠ΅β (ΠΏΡΠ΅Π²ΡΡΡΠ²Π°ΡΠ΅);
- Π»ΠΈΠ·Π³Π°ΡΠ΅/ΡΠΈΠΏΠ½ΡΠ²Π°ΡΠ΅.
ΠΠΎΡ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ Π²Π°ΡΠΈΡΠ΅ Π΄Π΅Π»ΠΎΠ²Π½ΠΈ Π±Π°ΡΠ°ΡΠ°. ΠΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ ΡΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π²ΡΡΡΠ²Π°Π°Ρ ΠΈ ΡΠΊΠΎΠΊΠ°Π°Ρ ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ, Π΄ΠΎΠ΄Π΅ΠΊΠ° ΠΏΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠΈΠΈΡΠ΅ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ ΠΎΠ΄ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠ° Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ - Π²ΡΠ΅ΠΌΠ΅ΡΡΠ°Π΅ΡΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΠΈΠΈΡΠ΅ ΡΠ΅ ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π° ΡΠ°ΠΌΠΎ ΠΎΠ΄ ΡΠΎΠ° ΠΊΠΎΠ»ΠΊΡ Π΅ Π°ΠΊΡΠΈΠ²Π΅Π½ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ. ΠΠ»Π°Π²Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π·Π°ΠΏΠ°ΠΌΠ΅ΡΠΈ Π΅ Π΄Π΅ΠΊΠ° ΡΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²ΠΈ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π°Π°Ρ Π½Π° ΠΎΠ·Π½Π°ΠΊΠΈΡΠ΅ Π·Π° Π΄Π°ΡΡΠΌ/Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠΈΡΠ΅, Π° Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ.
Π‘Π»Π΅Π΄Π½ΠΎ, ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ Π½Π°ΡΠ°ΡΠ° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° ΡΠΎ ΡΠ΅ΠΊΠΎΡ ΠΎΠ΄ ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ. Π¦Π΅Π»ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ ΡΠ΅ Π±ΠΈΠ΄Π΅ Π΄Π°Π΄Π΅Π½ ΡΠ°ΠΌΠΎ Π²ΠΎ ΠΏΡΠ²ΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° Π΄ΡΡΠ³ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π½ΠΈΡΡΠΎ Π½Π΅ΠΌΠ° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΎΡΠ²Π΅Π½ ΡΠΈΠΏΠΎΡ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠΎΡ.
ΠΡΠΎΠ·ΠΎΡΡΠΈ Π½Π° ΡΠ΅ΡΠΈΠΈ
ΠΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ Π·Π° ΡΠ΅ΡΠΈΠΈ ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠ΄ ΡΠΈΡΠ΅ Π΄ΡΡΠ³ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ. Π’ΠΈΠ΅ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ Π½Π΅ ΡΠΎΠ»ΠΊΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΊΠΎΠ»ΠΊΡ ΠΎΠ΄ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠ° Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ (ΠΈΠ»ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠ° Π½Π° Π΅Π½ΡΠΈΡΠ΅ΡΠΎΡ ΡΡΠΎ Π±ΠΈ ΡΠ°ΠΊΠ°Π»Π΅ Π΄Π° Π³ΠΎ ΡΠ»Π΅Π΄ΠΈΡΠ΅). ΠΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠΈΠΈΡΠ΅ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ ΡΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈ Π½Π° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ.
Π‘Π»ΠΈΠΊΠ° 5.12 Π³ΠΎ ΠΈΠ»ΡΡΡΡΠΈΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΎΡ Π½Π° ΡΠ΅ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ. ΠΠΎΠΌΠ°Π»Π°ΡΠ° ΡΠ΅ΡΠΈΡΠ° ΡΠ΅ ΡΠ΅ ΡΠΏΠΎΠΈ ΡΠΎ ΡΠ΅ΡΠΈΡΠ°ΡΠ° Π»Π΅Π²ΠΎ. Π ΡΠ΅Π΄Π½ΠΈΡΠ°ΡΠ° ΠΎΠ΄ Π΄Π΅ΡΠ½Π°ΡΠ° ΡΡΡΠ°Π½Π° ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΎΠ΄Π²ΠΎΠ΅Π½Π° Π±ΠΈΠ΄Π΅ΡΡΠΈ ΡΠ»Π΅Π΄ΠΈ Π΄ΠΎΠ»Π³ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π½Π° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ. ΠΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠΈΠΈΡΠ΅ ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π°Π°Ρ Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠ° Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ, Π½ΠΎ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΏΠ΅ΡΠ°ΡΠΈ Π·Π° Π΄Π°ΡΡΠΌ/Π²ΡΠ΅ΠΌΠ΅ ΠΎΠ΄ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π·Π° Π΄Π° ΠΎΠ΄ΡΠ΅Π΄Π°Ρ Π½Π° ΠΊΠΎΡΠ° ΡΠ΅ΡΠΈΡΠ° ΠΏΡΠΈΠΏΠ°ΡΠ° Π·Π°ΠΏΠΈΡΠΎΡ.
ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π·Π° ΡΠ΅ΡΠΈΡΠ° Π·Π° ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈΡΠ΅ ΡΠΎ Π°ΠΊΡΠΈΠΈ
ΠΡΠ΄Π΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π·Π° ΡΠ΅ΡΠΈΡΠ° Π·Π° Π΄Π° ΡΠ½ΠΈΠΌΠΈΠΌΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΠΌΠ΅Π½Π°. ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠΈΡΠ°ΡΠ° Π΅ ΠΏΡΠΈΠΊΠ°ΠΆΠ°Π½Π° Π²ΠΎ Π‘ΠΏΠΈΡΠΎΠΊΠΎΡ 5.5 (ΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΄Π΅ Π²ΠΎ src/main/java/bbejeck/chapter_5/CountingWindowingAndKTableJoinExample.java).
ΠΠ΅ΡΠ΅ ΡΡΠ΅ Π³ΠΈ Π²ΠΈΠ΄Π΅Π»Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΠΎ ΠΎΠ²Π°Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ°, ΡΠ°ΠΊΠ° ΡΡΠΎ Π½Π΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π° Π³ΠΈ Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΎΠ²Π΄Π΅. ΠΠΎ, ΡΡΠΊΠ° ΠΈΠΌΠ° ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π½ΠΎΠ²ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ, Π·Π° ΠΊΠΎΠΈ ΡΠ΅Π³Π° ΡΠ΅ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°ΠΌΠ΅.
Π‘Π΅ΠΊΠΎΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° groupBy Π²ΠΎΠΎΠ±ΠΈΡΠ°Π΅Π½ΠΎ Π²ΡΡΠΈ Π½Π΅ΠΊΠ°ΠΊΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° Π·Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ (Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ°, ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΈΠ»ΠΈ Π±ΡΠΎΠ΅ΡΠ΅). ΠΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΊΡΠΌΡΠ»Π°ΡΠΈΠ²Π½Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ° ΡΠΎ Π²ΠΊΡΠΏΠ΅Π½ Π²ΠΊΡΠΏΠ΅Π½ ΠΈΠ·Π½ΠΎΡ ΠΈΠ»ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ° Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ, ΡΡΠΎ Π³ΠΈ Π·Π΅ΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π²ΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ.
ΠΠΎΠ΄ΠΎΡ Π²ΠΎ ΠΎΠ³Π»Π°ΡΠΎΡ 5.5 Π³ΠΎ Π±ΡΠΎΠΈ Π±ΡΠΎΡΠΎΡ Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ Π²ΠΎ ΠΏΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠΈΠΈΡΠ΅. ΠΠ° ΡΠ». 5.13 ΠΎΠ²ΠΈΠ΅ Π΄Π΅ΡΡΡΠ²Π° ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π°Ρ ΡΠ΅ΠΊΠΎΡ ΠΏΠΎ ΡΠ΅ΠΊΠΎΡ.
Π‘ΠΎ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ Π½Π° windowedBy(SessionWindows.with(twentySeconds).until(fifteenMinutes)) ΡΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ Π½Π° ΡΠ΅ΡΠΈΡΠ° ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π½Π° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ ΠΎΠ΄ 20 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π½Π° ΡΠΏΠΎΡΠ½ΠΎΡΡ ΠΎΠ΄ 15 ΠΌΠΈΠ½ΡΡΠΈ. ΠΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΡ Π½Π° ΠΌΠΈΡΡΠ²Π°ΡΠ΅ ΠΎΠ΄ 20 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΡΠ΅ Π³ΠΎ Π²ΠΊΠ»ΡΡΠΈ ΡΠ΅ΠΊΠΎΡ Π·Π°ΠΏΠΈΡ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΡΡΠΈΠ³Π½Π΅ Π²ΠΎ ΡΠΎΠΊ ΠΎΠ΄ 20 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΎΠ΄ ΠΊΡΠ°ΡΠΎΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ Π½Π° ΡΠ΅ΠΊΠΎΠ²Π½Π°ΡΠ° ΡΠ΅ΡΠΈΡΠ° Π²ΠΎ ΡΠ΅ΠΊΠΎΠ²Π½Π°ΡΠ° (Π°ΠΊΡΠΈΠ²Π½Π°) ΡΠ΅ΡΠΈΡΠ°.
Π‘Π»Π΅Π΄Π½ΠΎ, ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° Π·Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ° ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ Π²ΠΎ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠΎΡ Π½Π° ΡΠ΅ΡΠΈΡΠ°ΡΠ° - Π²ΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ, Π±ΡΠΎΠΈ. ΠΠΊΠΎ Π΄ΠΎΡΠ΄ΠΎΠ²Π½ΠΈΠΎΡ Π·Π°ΠΏΠΈΡ ΠΏΠ°Π΄Π½Π΅ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠΎΡ Π·Π° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ (ΠΎΠ΄ ΡΠ΅ΠΊΠΎΡΠ° ΡΡΡΠ°Π½Π° ΠΎΠ΄ ΠΏΠ΅ΡΠ°ΡΠΎΡ Π·Π° Π΄Π°ΡΡΠΌ/Π²ΡΠ΅ΠΌΠ΅), Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΡΠΎΠ·Π΄Π°Π²Π° Π½ΠΎΠ²Π° ΡΠ΅ΡΠΈΡΠ°. ΠΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΡ Π½Π° Π·Π°Π΄ΡΠΆΡΠ²Π°ΡΠ΅ Π·Π½Π°ΡΠΈ ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅ΡΠΈΡΠ° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄ΠΎΡΠ½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΎΡΠ΅Π³Π°Π°Ρ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΡ Π½Π° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π½Π° ΡΠ΅ΡΠΈΡΠ°ΡΠ°, Π½ΠΎ ΡΠ΅ΠΏΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΊΠ°ΡΠ°Ρ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ ΠΈ ΠΊΡΠ°ΡΠΎΡ Π½Π° Π½ΠΎΠ²Π°ΡΠ° ΡΠ΅ΡΠΈΡΠ° ΡΡΠΎ ΠΏΡΠΎΠΈΠ·Π»Π΅Π³ΡΠ²Π° ΠΎΠ΄ ΡΠΏΠΎΡΡΠ²Π°ΡΠ΅ΡΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°Π°Ρ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈΠΎΡ ΠΈ Π½Π°ΡΠ½ΠΎΠ²ΠΈΠΎΡ ΠΏΠ΅ΡΠ°Ρ Π·Π° Π΄Π°ΡΡΠΌ/Π²ΡΠ΅ΠΌΠ΅.
ΠΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π·Π°ΠΏΠΈΡΠΈ ΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ Π½Π° Π±ΡΠΎΠ΅ΡΠ΅ Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π°Ρ ΡΠ΅ΡΠΈΠΈΡΠ΅ (Π’Π°Π±Π΅Π»Π° 5.1).
ΠΠΎΠ³Π° ΠΏΡΠΈΡΡΠΈΠ³Π½ΡΠ²Π°Π°Ρ Π·Π°ΠΏΠΈΡΠΈΡΠ΅, Π±Π°ΡΠ°ΠΌΠ΅ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈ ΡΠ΅ΡΠΈΠΈ ΡΠΎ ΠΈΡΡΠΎΡΠΎ ΠΊΠΎΠΏΡΠ΅, Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π·Π°Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΠΌΠ°Π»ΠΎ ΠΎΠ΄ ΡΠ΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ ΠΏΠ΅ΡΠ°Ρ Π½Π° Π΄Π°ΡΡΠΌ/Π²ΡΠ΅ΠΌΠ΅ - ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π½Π° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌΠΎ ΠΎΠ΄ ΡΠ΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ ΠΏΠ΅ΡΠ°Ρ Π½Π° Π΄Π°ΡΡΠΌ/Π²ΡΠ΅ΠΌΠ΅ + ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π½Π° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ. ΠΠ΅ΠΌΠ°ΡΡΠΈ Π³ΠΎ ΠΎΠ²Π° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ΡΠΈΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΎΠ΄ ΡΠ°Π±Π΅Π»Π°ΡΠ°. 5.1 ΡΠ΅ ΡΠΏΠΎΠ΅Π½ΠΈ Π²ΠΎ Π΅Π΄Π½Π° ΡΠ΅ΡΠΈΡΠ° Π½Π° ΡΠ»Π΅Π΄Π½ΠΈΠΎΠ² Π½Π°ΡΠΈΠ½.
1. ΠΠ°ΠΏΠΈΡΠΎΡ 1 ΠΏΡΠΈΡΡΠΈΠ³Π½ΡΠ²Π° ΠΏΡΠ², ΡΠ°ΠΊΠ° ΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π°ΡΠ΅ Π΅ Π΅Π΄Π½Π°ΠΊΠ²ΠΎ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π·Π°Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΈ Π΅ 00:00:00 ΡΠ°ΡΠΎΡ.
2. Π‘Π»Π΅Π΄Π½ΠΎ, ΠΏΡΠΈΡΡΠΈΠ³Π½ΡΠ²Π° Π·Π°ΠΏΠΈΡΠΎΡ 2 ΠΈ Π±Π°ΡΠ°ΠΌΠ΅ ΡΠ΅ΡΠΈΠΈ ΠΊΠΎΠΈ Π·Π°Π²ΡΡΡΠ²Π°Π°Ρ Π½Π΅ ΠΏΠΎΡΠ°Π½ΠΎ ΠΎΠ΄ 23:59:55 ΠΈ Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π°Π°Ρ Π½Π°ΡΠ΄ΠΎΡΠ½Π° Π΄ΠΎ 00:00:35. ΠΠΎ Π½Π°ΠΎΡΠ°ΠΌΠ΅ Π·Π°ΠΏΠΈΡΠΎΡ 1 ΠΈ Π³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ ΡΠ΅ΡΠΈΠΈΡΠ΅ 1 ΠΈ 2. ΠΠΎ Π·Π΅ΠΌΠ°ΠΌΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΏΠΎΡΠ΅ΡΠΎΠΊ Π½Π° ΡΠ΅ΡΠΈΡΠ°ΡΠ° 1 (ΠΏΠΎΡΠ°Π½ΠΎ) ΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π·Π°Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅ΡΠΈΡΠ°ΡΠ° 2 (ΠΏΠΎΠ΄ΠΎΡΠ½Π°), ΡΠ°ΠΊΠ° ΡΡΠΎ Π½Π°ΡΠ°ΡΠ° Π½ΠΎΠ²Π° ΡΠ΅ΡΠΈΡΠ° Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π° Π²ΠΎ 00:00:00 ΡΠ°ΡΠΎΡ ΠΈ Π·Π°Π²ΡΡΡΠ²Π° Π²ΠΎ 00:00 ΡΠ°ΡΠΎΡ: 15:XNUMX ΡΠ°ΡΠΎΡ.
3. ΠΡΠΈΡΡΠΈΠ³Π½ΡΠ²Π° Π·Π°ΠΏΠΈΡΠΎΡ 3, Π±Π°ΡΠ°ΠΌΠ΅ ΡΠ΅ΡΠΈΠΈ ΠΏΠΎΠΌΠ΅ΡΡ 00:00:30 ΠΈ 00:01:10 ΡΠ°ΡΠΎΡ ΠΈ Π½Π΅ Π½Π°ΠΎΡΠ°ΠΌΠ΅ Π½ΠΈΡΡ Π΅Π΄Π½Π°. ΠΠΎΠ΄Π°Π΄Π΅ΡΠ΅ Π²ΡΠΎΡΠ° ΡΠ΅ΡΠΈΡΠ° Π·Π° ΠΊΠ»ΡΡΠΎΡ 123-345-654,FFBE, ΠΏΠΎΡΠ½ΡΠ²Π°ΡΡΠΈ ΠΈ Π·Π°Π²ΡΡΡΠ²Π°ΡΡΠΈ Π²ΠΎ 00:00:50 ΡΠ°ΡΠΎΡ.
4. ΠΡΠΈΡΡΠΈΠ³Π½ΡΠ²Π° Π·Π°ΠΏΠΈΡΠΎΡ 4 ΠΈ Π±Π°ΡΠ°ΠΌΠ΅ ΡΠ΅ΡΠΈΠΈ ΠΏΠΎΠΌΠ΅ΡΡ 23:59:45 ΠΈ 00:00:25 ΡΠ°ΡΠΎΡ. ΠΠ²ΠΎΡ ΠΏΠ°Ρ ΡΠ΅ Π½Π°ΠΎΡΠ°Π°Ρ ΠΈ Π΄Π²Π΅ΡΠ΅ ΡΠ΅ΡΠΈΠΈ 1 ΠΈ 2 Π‘ΠΈΡΠ΅ ΡΡΠΈ ΡΠ΅ΡΠΈΠΈ ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½ΠΈ Π²ΠΎ Π΅Π΄Π½Π°, ΡΠΎ ΠΏΠΎΡΠ΅ΡΠΎΠΊ ΠΎΠ΄ 00:00 ΡΠ°ΡΠΎΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π·Π°Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΎΠ΄ 00:00:00 ΡΠ°ΡΠΎΡ.
ΠΠ΄ ΠΎΠ½Π° ΡΡΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΠΎ ΠΎΠ²ΠΎΡ Π΄Π΅Π», Π²ΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠ°ΠΌΠ΅ΡΠΈ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π²Π°ΠΆΠ½ΠΈ Π½ΠΈΡΠ°Π½ΡΠΈ:
- ΡΠ΅ΡΠΈΠΈΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ ΡΠΎ ΡΠΈΠΊΡΠ½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°. ΠΡΠ΅ΠΌΠ΅ΡΡΠ°Π΅ΡΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΠΈΡΠ°ΡΠ° ΡΠ΅ ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π° ΡΠΏΠΎΡΠ΅Π΄ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠ° Π²ΠΎ Π΄Π°Π΄Π΅Π½ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄;
- ΠΠ·Π½Π°ΠΊΠΈΡΠ΅ Π·Π° Π΄Π°ΡΡΠΌ/Π²ΡΠ΅ΠΌΠ΅ Π²ΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π°Π°Ρ Π΄Π°Π»ΠΈ Π½Π°ΡΡΠ°Π½ΠΎΡ ΡΠΏΠ°ΡΠ° Π²ΠΎ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠ° ΡΠ΅ΡΠΈΡΠ° ΠΈΠ»ΠΈ Π²ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π½Π° ΠΌΠΈΡΡΠ²Π°ΡΠ΅.
Π‘Π»Π΅Π΄Π½ΠΎ, ΡΠ΅ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°ΠΌΠ΅ Π·Π° ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ ΡΠΈΠΏ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ - ΠΏΡΠΎΠ·ΠΎΡΡΠΈ βΠΏΡΠ΅Π²ΡΡΠ»ΠΈΠ²ΠΈβ.
βΠΡΠΎΠ²ΡΡΠ΅Π½ΠΈβ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ
ΠΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ ΡΡΠΎ ΠΏΠ°ΡΠ°Π°Ρ ΡΠ½ΠΈΠΌΠ°Π°Ρ Π½Π°ΡΡΠ°Π½ΠΈ ΡΡΠΎ ΡΠΏΠ°ΡΠ°Π°Ρ Π²ΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄. ΠΠ°ΠΌΠΈΡΠ»Π΅ΡΠ΅ Π΄Π΅ΠΊΠ° ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΈ ΡΠ½ΠΈΠΌΠΈΡΠ΅ ΡΠΈΡΠ΅ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ ΡΠΎ Π°ΠΊΡΠΈΠΈ Π½Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠ° Π½Π° ΡΠ΅ΠΊΠΎΠΈ 20 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΠΏΠ° Π΄Π° Π³ΠΈ ΡΠΎΠ±Π΅ΡΠ΅ΡΠ΅ ΡΠΈΡΠ΅ Π½Π°ΡΡΠ°Π½ΠΈ Π²ΠΎ ΡΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄. ΠΠ° ΠΊΡΠ°ΡΠΎΡ ΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΡ ΠΎΠ΄ 20 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠΎΡ ΡΠ΅ ΠΏΡΠ΅Π²ΡΡΡΠ²Π° ΠΈ ΡΠ΅ ΠΏΡΠ΅ΡΡΠ»Π° Π½Π° Π½ΠΎΠ² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π½Π° Π½Π°Π±ΡΡΠ΄ΡΠ²Π°ΡΠ΅ ΠΎΠ΄ 20 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. Π‘Π»ΠΈΠΊΠ° 5.14 ΡΠ° ΠΈΠ»ΡΡΡΡΠΈΡΠ° ΠΎΠ²Π°Π° ΡΠΈΡΡΠ°ΡΠΈΡΠ°.
ΠΠ°ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠΈΡΠ΅ Π½Π°ΡΡΠ°Π½ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈ Π²ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ 20 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π²ΠΎ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠΎΡ. ΠΠ° ΠΊΡΠ°ΡΠΎΡ ΠΎΠ΄ ΠΎΠ²ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄, ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ° Π½ΠΎΠ² ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ.
ΠΠΏΠΈΡΠΎΡ 5.6 ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π° ΠΊΠΎΠ΄ ΡΡΠΎ ΡΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΡΠΊΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π·Π° ΡΠ½ΠΈΠΌΠ°ΡΠ΅ Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈΡΠ΅ Π½Π° Π°ΠΊΡΠΈΠΈ Π½Π° ΡΠ΅ΠΊΠΎΠΈ 20 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ (ΡΠ΅ Π½Π°ΠΎΡΠ° Π²ΠΎ src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java).
Π‘ΠΎ ΠΎΠ²Π°Π° ΠΌΠ°Π»Π° ΠΏΡΠΎΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠΎΡ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ TimeWindows.of, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠΎΠ»Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ. ΠΠ²ΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π΅ Π³ΠΎ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ Π΄ΠΎ(), ΡΠ°ΠΊΠ° ΡΡΠΎ ΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π½Π° Π·Π°Π΄ΡΠΆΡΠ²Π°ΡΠ΅ ΠΎΠ΄ 24 ΡΠ°ΡΠ°.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²ΡΠ΅ΠΌΠ΅ Π΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΡΠ»ΠΈΠΌΠ΅ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΎΠ΄ ΠΎΠΏΡΠΈΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠΎΡ - βΠΏΡΠ΅ΡΠΊΠΎΠΊΠ½ΡΠ²Π°ΡΠ΅β Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ.
ΠΠΈΠ·Π³Π°ΡΠΊΠΈ ("ΡΠΊΠΎΠΊΠ°ΡΠΊΠΈ") ΠΏΡΠΎΠ·ΠΎΡΡΠΈ
ΠΠΈΠ·Π³Π°ΡΠΊΠΈΡΠ΅/ΠΏΠΎΠ΄ΡΠΊΠΎΠΊΠ½ΡΠ²Π°ΡΠΊΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ ΡΠ΅ ΡΠ»ΠΈΡΠ½ΠΈ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ ΡΡΠΎ ΡΠ΅ Π²ΡΡΠ°Ρ, Π½ΠΎ ΡΠΎ ΠΌΠ°Π»Π° ΡΠ°Π·Π»ΠΈΠΊΠ°. ΠΠΈΠ·Π³Π°ΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π½Π΅ ΡΠ΅ΠΊΠ°Π°Ρ Π΄ΠΎ ΠΊΡΠ°ΡΠΎΡ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΏΡΠ΅Π΄ Π΄Π° ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ Π½ΠΎΠ² ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π½Π΅ΠΎΠ΄Π°ΠΌΠ½Π΅ΡΠ½ΠΈΡΠ΅ Π½Π°ΡΡΠ°Π½ΠΈ. Π’ΠΈΠ΅ Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π°Π°Ρ Π½ΠΎΠ²ΠΈ ΠΏΡΠ΅ΡΠΌΠ΅ΡΠΊΠΈ ΠΏΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π½Π° ΡΠ΅ΠΊΠ°ΡΠ΅ ΠΏΠΎΠΌΠ°Π» ΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅ΡΡΠ°Π΅ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠΎΡ.
ΠΠ° Π΄Π° Π³ΠΈ ΠΈΠ»ΡΡΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ ΠΏΡΠΎΠ·ΠΎΡΠΈΡΠ΅ ΡΡΠΎ ΡΠ΅ ΡΡΠΊΠ°Π»Π°Π°Ρ ΠΈ ΡΠΊΠΎΠΊΠ°Π°Ρ, Π΄Π° ΡΠ΅ Π²ΡΠ°ΡΠΈΠΌΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠΎΡ Π½Π° Π±ΡΠΎΠ΅ΡΠ΅ Π±Π΅ΡΠ·Π°Π½ΡΠΊΠΈ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ. ΠΠ°ΡΠ°ΡΠ° ΡΠ΅Π» Π΅ ΡΓ¨ ΡΡΡΠ΅ Π΄Π° Π³ΠΎ Π±ΡΠΎΠΈΠΌΠ΅ Π±ΡΠΎΡΠΎΡ Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ, Π½ΠΎ Π½Π΅ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΠ΅ΠΊΠ°ΠΌΠ΅ ΡΠ΅Π»ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΏΡΠ΅Π΄ Π΄Π° Π³ΠΎ Π°ΠΆΡΡΠΈΡΠ°ΠΌΠ΅ Π±ΡΠΎΡΠ°ΡΠΎΡ. ΠΠ°ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ°, ΡΠ΅ Π³ΠΎ Π°ΠΆΡΡΠΈΡΠ°ΠΌΠ΅ Π±ΡΠΎΡΠ°ΡΠΎΡ Π½Π° ΠΏΠΎΠΊΡΠ°ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΠΏΠ°ΠΊ ΡΠ΅ Π³ΠΎ Π±ΡΠΎΠΈΠΌΠ΅ Π±ΡΠΎΡΠΎΡ Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ Π½Π° ΡΠ΅ΠΊΠΎΠΈ 20 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π½ΠΎ Π³ΠΎ Π°ΠΆΡΡΠΈΡΠ°ΠΌΠ΅ Π±ΡΠΎΡΠ°ΡΠΎΡ Π½Π° ΡΠ΅ΠΊΠΎΠΈ 5 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ ΠΏΡΠΈΠΊΠ°ΠΆΠ°Π½ΠΎ Π½Π° ΡΠ». 5.15. ΠΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ, Π·Π°Π²ΡΡΡΠ²Π°ΠΌΠ΅ ΡΠΎ ΡΡΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΡΠΎ ΠΏΡΠ΅ΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠΊΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ.
Π‘ΠΏΠΈΡΠΎΠΊΠΎΡ 5.7 Π³ΠΎ ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π° ΠΊΠΎΠ΄ΠΎΡ Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½Π° Π»ΠΈΠ·Π³Π°ΡΠΊΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ (ΡΠ΅ Π½Π°ΠΎΡΠ° Π²ΠΎ src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java).
ΠΡΠΎΠ·ΠΎΡΠ΅ΡΠΎΡ ΡΡΠΎ ΠΏΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΠ²ΠΎΡΠΈ Π²ΠΎ ΡΠΊΠΎΠΊΠ°ΡΠΊΠΈ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ ΡΠΎ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ advanceBy(). ΠΠΎ ΠΏΡΠΈΠΊΠ°ΠΆΠ°Π½ΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΡ Π·Π° Π·Π°ΡΡΠ΅Π΄Π° Π΅ 15 ΠΌΠΈΠ½ΡΡΠΈ.
ΠΠΈΠ΄ΠΎΠ²ΡΠ΅ Π²ΠΎ ΠΎΠ²ΠΎΡ Π΄Π΅Π» ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΠ΄ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ, ΡΠ°ΠΊΠ°ΠΌ Π΄Π° Π³ΠΈ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠΈ ΡΠ°Π±ΠΎΡΠΈ ΠΎΠ΄ ΠΎΠ²ΠΎΡ Π΄Π΅Π»:
- Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠΈΠΈΡΠ΅ Π½Π΅ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄, ΡΡΠΊΡ ΡΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ;
- ΠΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ ΡΠΎ βΠΏΡΠ΅Π²ΡΡΡΠ²Π°ΡΠ΅β ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°Π°Ρ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈΡΠ΅ Π²ΠΎ Π΄Π°Π΄Π΅Π½ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄;
- ΠΡΠ΅ΠΌΠ΅ΡΡΠ°Π΅ΡΠ΅ΡΠΎ Π½Π° ΡΠΊΠΎΠΊΠ°ΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π΅ ΡΠΈΠΊΡΠ½ΠΎ, Π½ΠΎ ΡΠΈΠ΅ ΡΠ΅ΡΡΠΎ ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°Π°Ρ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠΎΠ΄ΡΠΆΠ°Ρ ΠΏΡΠ΅ΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠΊΠΈ Π·Π°ΠΏΠΈΡΠΈ Π²ΠΎ ΡΠΈΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ.
Π‘Π»Π΅Π΄Π½ΠΎ, ΡΠ΅ Π½Π°ΡΡΠΈΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΠΌΠ΅ KTable Π½Π°Π·Π°Π΄ Π²ΠΎ KStream Π·Π° Π²ΡΡΠΊΠ°.
5.3.3. ΠΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Π½Π° KStream ΠΈ KTable
ΠΠΎ ΠΏΠΎΠ³Π»Π°Π²ΡΠ΅ 4, ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°Π²ΠΌΠ΅ Π·Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° Π΄Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π½Π° KStream. Π‘Π΅Π³Π° ΡΡΠ΅Π±Π° Π΄Π° Π½Π°ΡΡΠΈΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΈ ΠΏΠΎΠ²ΡΠ·Π΅ΠΌΠ΅ KTable ΠΈ KStream. ΠΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΠΎΠ΄ ΡΠ»Π΅Π΄Π½Π°ΡΠ° Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° ΠΏΡΠΈΡΠΈΠ½Π°. KStream Π΅ ΠΏΠΎΡΠΎΠΊ ΠΎΠ΄ Π·Π°ΠΏΠΈΡΠΈ, Π° KTable Π΅ ΠΏΠΎΡΠΎΠΊ Π½Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ° Π½Π° Π·Π°ΠΏΠΈΡΠΈ, Π½ΠΎ ΠΏΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ ΠΌΠΎΠΆΠ΅Π±ΠΈ ΡΠ΅ ΡΠ°ΠΊΠ°ΡΠ΅ Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΡ Π½Π° Π·Π°ΠΏΠΈΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π°ΠΆΡΡΠΈΡΠ°ΡΠ° ΠΎΠ΄ KTable.
ΠΠ° Π·Π΅ΠΌΠ΅ΠΌΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° Π±ΡΠΎΡΠΎΡ Π½Π° Π±Π΅ΡΠ·Π°Π½ΡΠΊΠΈ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ ΠΈ Π΄Π° Π³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ ΡΠΎ Π±Π΅ΡΠ·Π°Π½ΡΠΊΠΈΡΠ΅ Π½ΠΎΠ²ΠΎΡΡΠΈ Π·Π° ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ. ΠΠ²Π΅ ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π·Π° Π΄Π° Π³ΠΎ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΡΠ΅ ΠΎΠ²Π° ΡΠΎ ΠΎΠ³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ΄ΠΎΡ ΡΡΠΎ Π²Π΅ΡΠ΅ Π³ΠΎ ΠΈΠΌΠ°ΡΠ΅.
- ΠΡΠ΅ΡΠ²ΠΎΡΠ΅ΡΠ΅ Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ KTable ΡΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° Π±ΡΠΎΡΠΎΡ Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ Π½Π° Π°ΠΊΡΠΈΠΈ Π²ΠΎ KStream, ΠΏΡΠΎΡΠ»Π΅Π΄Π΅Π½ΠΎ ΡΠΎ Π·Π°ΠΌΠ΅Π½Π° Π½Π° ΠΊΠ»ΡΡΠΎΡ ΡΠΎ ΠΊΠ»ΡΡΠΎΡ ΡΡΠΎ Π³ΠΎ ΠΎΠ·Π½Π°ΡΡΠ²Π° ΠΈΠ½Π΄ΡΡΡΡΠΈΡΠΊΠΈΠΎΡ ΡΠ΅ΠΊΡΠΎΡ ΡΡΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π° ΠΎΠ²ΠΎΡ ΡΠΈΠΌΠ±ΠΎΠ» Π½Π° Π°ΠΊΡΠΈΠΈ.
- ΠΡΠ΅ΠΈΡΠ°ΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ KTable ΠΊΠΎΡ ΡΠΈΡΠ° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ ΡΠ΅ΠΌΠ° ΡΠΎ Π²Π΅ΡΡΠΈ ΠΎΠ΄ Π±Π΅ΡΠ·Π°ΡΠ°. ΠΠ²Π°Π° Π½ΠΎΠ²Π° KTable ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎ ΠΈΠ½Π΄ΡΡΡΡΠΈΡΠΊΠΈ ΡΠ΅ΠΊΡΠΎΡ.
- ΠΠΎΠ²ΡΠ·Π΅ΡΠ΅ Π³ΠΈ Π°ΠΆΡΡΠΈΡΠ°ΡΠ°ΡΠ° Π½Π° Π²Π΅ΡΡΠΈΡΠ΅ ΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° Π±ΡΠΎΡΠΎΡ Π½Π° Π±Π΅ΡΠ·Π°Π½ΡΠΊΠΈ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠ΅ΠΊΡΠΎΡΠΈ Π½Π° ΠΈΠ½Π΄ΡΡΡΡΠΈΡΠ°ΡΠ°.
Π‘Π΅Π³Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ ΡΠΏΡΠΎΠ²Π΅Π΄Π΅ΠΌΠ΅ ΠΎΠ²ΠΎΡ Π°ΠΊΡΠΈΠΎΠ½Π΅Π½ ΠΏΠ»Π°Π½.
ΠΡΠ΅ΡΠ²ΠΎΡΠ΅ΡΠ΅ Π³ΠΎ KTable Π²ΠΎ KStream
ΠΠ° Π΄Π° Π³ΠΎ ΠΏΡΠ΅ΡΠ²ΠΎΡΠΈΡΠ΅ KTable Π²ΠΎ KStream, ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΠ²ΠΎ.
- ΠΠΎΠ²ΠΈΠΊΠ°ΡΡΠ΅ Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ KTable.toStream().
- Π‘ΠΎ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ KStream.map, Π·Π°ΠΌΠ΅Π½Π΅ΡΠ΅ Π³ΠΎ ΠΊΠ»ΡΡΠΎΡ ΡΠΎ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ½Π΄ΡΡΡΡΠΈΡΠ°ΡΠ°, Π° ΠΏΠΎΡΠΎΠ° ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ΡΠ΅ Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ TransactionSummary ΠΎΠ΄ ΠΈΠ½ΡΡΠ°Π½ΡΠ°ΡΠ° Windowed.
ΠΠ΅ Π³ΠΈ ΠΏΠΎΠ²ΡΠ·Π΅ΠΌΠ΅ ΠΎΠ²ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°Π΅Π΄Π½ΠΎ Π½Π° ΡΠ»Π΅Π΄Π½ΠΈΠΎΠ² Π½Π°ΡΠΈΠ½ (ΠΊΠΎΠ΄ΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΄Π΅ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (Π‘ΠΏΠΈΡΠΎΠΊ 5.8).
ΠΠΈΠ΄Π΅ΡΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΠΌΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° KStream.map, Π²ΡΠ°ΡΠ΅Π½Π°ΡΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠ° Π½Π° KStream ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΠ΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΎΠ½ΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ Π²ΡΡΠΊΠ°.
ΠΠΎ Π·Π°Π²ΡΡΠΈΠ²ΠΌΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΠΊΠΎΠ½Π²Π΅ΡΠ·ΠΈΡΠ°, ΠΏΠΎΡΠΎΠ° ΡΡΠ΅Π±Π° Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ KTable Π·Π° ΡΠΈΡΠ°ΡΠ΅ Π²Π΅ΡΡΠΈ Π·Π° Π°ΠΊΡΠΈΠΈ.
Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ Π½Π° KTable Π·Π° Π²Π΅ΡΡΠΈ Π·Π° Π°ΠΊΡΠΈΠΈ
ΠΠ° ΡΡΠ΅ΡΠ°, ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ KTable Π±Π°ΡΠ° ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° Π»ΠΈΠ½ΠΈΡΠ° ΠΊΠΎΠ΄ (ΠΊΠΎΠ΄ΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΄Π΅ Π²ΠΎ src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (Π‘ΠΏΠΈΡΠΎΠΊ 5.9).
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ Π΄Π΅ΠΊΠ° Π½Π΅ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π΄Π° ΡΠ΅ Π½Π°Π²Π΅Π΄Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π½Π° Serde, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π²ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΡΡΠΈΠ½Π³ Serde. ΠΡΡΠΎ ΡΠ°ΠΊΠ°, ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΠΠΠ ΠΠΠ Π½Π°Π±ΡΠΎΡΡΠ²Π°ΡΠ΅, ΡΠ°Π±Π΅Π»Π°ΡΠ° ΡΠ΅ ΠΏΠΎΠΏΠΎΠ»Π½ΡΠ²Π° ΡΠΎ Π·Π°ΠΏΠΈΡΠΈ Π½Π° ΡΠ°ΠΌΠΈΠΎΡ ΠΏΠΎΡΠ΅ΡΠΎΠΊ.
Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌΠ΅ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΎΡ ΡΠ΅ΠΊΠΎΡ - ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅.
ΠΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° Π½ΠΎΠ²ΠΎΡΡΠΈ ΡΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° Π±ΡΠΎΡΠΎΡ Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ
Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ΡΠΎ Π²ΡΡΠΊΠ° Π½Π΅ Π΅ ΡΠ΅ΡΠΊΠΎ. ΠΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π»Π΅Π²ΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π΄Π° Π½Π΅ΠΌΠ° Π½ΠΎΠ²ΠΎΡΡΠΈ Π·Π° Π°ΠΊΡΠΈΠΈ Π·Π° ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½Π°ΡΠ° ΠΈΠ½Π΄ΡΡΡΡΠΈΡΠ° (ΠΏΠΎΡΡΠ΅Π±Π½ΠΈΠΎΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΄Π΅ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° src/main/java/bbejeck/chapter_5/CountingWindowingAndKtableJoinExample.java) (Π‘ΠΏΠΈΡΠΎΠΊ 5.10).
ΠΠ²ΠΎΡ Π»Π΅Π²ΠΎ-ΠΡΠΈΠΊΠ»ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ ΡΠΏΠΎΡΡΠ²Π°ΡΠ°ΡΠ° Π²ΠΎ ΠΠΎΠ³Π»Π°Π²ΡΠ΅ 4, ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ JoinWindow Π½Π΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΏΡΠΈ ΠΈΠ·Π²Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΏΠΎΡΡΠ²Π°ΡΠ΅ KStream-KTable, ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π΅Π΄Π΅Π½ Π·Π°ΠΏΠΈΡ Π²ΠΎ KTable Π·Π° ΡΠ΅ΠΊΠΎΠ΅ ΠΊΠΎΠΏΡΠ΅. Π’Π°ΠΊΠ²Π°ΡΠ° Π²ΡΡΠΊΠ° Π½Π΅ Π΅ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π°: Π·Π°ΠΏΠΈΡΠΎΡ Π΅ ΠΈΠ»ΠΈ Π²ΠΎ KTable ΠΈΠ»ΠΈ ΠΎΡΡΡΡΠ΅Π½. ΠΠ»Π°Π²Π½ΠΈΠΎΡ Π·Π°ΠΊΠ»ΡΡΠΎΠΊ: ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π½Π° KTable ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π·Π±ΠΎΠ³Π°ΡΠΈΡΠ΅ KStream ΡΠΎ ΠΏΠΎΡΠ΅ΡΠΊΠΎ Π°ΠΆΡΡΠΈΡΠ°Π½ΠΈ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ.
Π‘Π΅Π³Π° ΡΠ΅ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ ΠΏΠΎΠ΅ΡΠΈΠΊΠ°ΡΠ΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° Π·Π±ΠΎΠ³Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ ΠΎΠ΄ KStream.
5.3.4. ΠΠ»ΠΎΠ±Π°Π»ΠΠ’Π°Π±Π΅Π»Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈ
ΠΠ°ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΏΠΎΡΡΠΎΠΈ ΠΏΠΎΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π·Π±ΠΎΠ³Π°ΡΠ°Ρ ΠΏΡΠ΅Π½ΠΎΡΠΈΡΠ΅ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ Π΄ΠΎΠ΄Π°Π΄Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° Π½ΠΈΠ². ΠΠΎ ΠΏΠΎΠ³Π»Π°Π²ΡΠ΅ 4 Π³ΠΈ Π²ΠΈΠ΄ΠΎΠ²ΡΠ΅ Π²ΡΡΠΊΠΈΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ Π΄Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π½Π° KStream, Π° Π²ΠΎ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈΠΎΡ Π΄Π΅Π» ΡΠ° Π²ΠΈΠ΄ΠΎΠ²ΡΠ΅ Π²ΡΡΠΊΠ°ΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ KStream ΠΈ KTable. ΠΠΎ ΡΠΈΡΠ΅ ΠΎΠ²ΠΈΠ΅ ΡΠ»ΡΡΠ°ΠΈ, Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΎ Π΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΡ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΏΡΠΈ ΠΌΠ°ΠΏΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠ»ΡΡΠ΅Π²ΠΈΡΠ΅ Π½Π° Π½ΠΎΠ² ΡΠΈΠΏ ΠΈΠ»ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡ. ΠΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ ΡΠ΅ΠΏΠ°ΡΡΠΈΡΠΈΠΎΠ½ΠΈΡΠ°ΡΠ΅ΡΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ, Π° ΠΏΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ ΠΠ°ΡΠΊΠ° ΡΡΡΠΈΠΌΡ Π³ΠΎ ΠΏΡΠ°Π²ΠΈ ΡΠΎΠ° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ. ΠΠΎΠ²ΡΠΎΡΠ½Π°ΡΠ° ΠΏΠ°ΡΡΠΈΡΠΈΡΠ° Π΅ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½Π° Π·Π°ΡΠΎΠ° ΡΡΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠΈ ΠΈ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΌΠΎΡΠ° Π΄Π° Π·Π°Π²ΡΡΠ°Ρ Π²ΠΎ Π½ΠΎΠ²ΠΈ Π΄Π΅Π»ΠΎΠ²ΠΈ, ΠΈΠ½Π°ΠΊΡ Π²ΡΡΠΊΠ°ΡΠ° ΡΠ΅ Π±ΠΈΠ΄Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° (ΠΎΠ²Π° Π±Π΅ΡΠ΅ Π΄ΠΈΡΠΊΡΡΠΈΡΠ°Π½ΠΎ Π²ΠΎ ΠΠΎΠ³Π»Π°Π²ΡΠ΅ 4, Π²ΠΎ Π΄Π΅Π»ΠΎΡ βΠΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΠ°ΡΡΠΈΡΠΈΠΎΠ½ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈβ Π²ΠΎ ΠΏΠΎΡΡΠΎΡΠΊΠ° 4.2.4).
ΠΠΎΠ²ΡΠΎΡΠ½Π°ΡΠ° ΠΏΠ°ΡΡΠΈΡΠΈΡΠ° ΠΈΠΌΠ° ΡΠ΅Π½Π°
ΠΠΎΠ²ΡΠΎΡΠ½Π°ΡΠ° ΠΏΠ°ΡΡΠΈΡΠΈΡΠ° Π±Π°ΡΠ° ΡΡΠΎΡΠΎΡΠΈ - Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠΎΡΠΎΡΠΈ Π·Π° ΡΠ΅ΡΡΡΡΠΈ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΡΠ΅Π΄Π½ΠΈ ΡΠ΅ΠΌΠΈ, ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π° Π΄ΡΠΏΠ»ΠΈΠΊΠ°Ρ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ Π΄ΡΡΠ³Π° ΡΠ΅ΠΌΠ°; Π·Π½Π°ΡΠΈ ΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΠ΅Π½Π° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΈ ΡΠΈΡΠ°ΡΠ΅ ΠΎΠ΄ ΠΎΠ²Π°Π° ΡΠ΅ΠΌΠ°. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, Π°ΠΊΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ΄ΡΡΠΆΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ Π΅Π΄Π΅Π½ Π°ΡΠΏΠ΅ΠΊΡ ΠΈΠ»ΠΈ Π΄ΠΈΠΌΠ΅Π½Π·ΠΈΡΠ°, ΠΌΠΎΡΠ° Π΄Π° Π³ΠΈ Π²ΡΠ·Π΅ΡΠ΅ ΡΠΏΠΎΡΠΊΠΈΡΠ΅, Π΄Π° Π³ΠΈ ΠΌΠ°ΠΏΠΈΡΠ°ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ ΡΠΎ Π½ΠΎΠ²ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΈ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π° Π³ΠΎ ΠΈΠ·Π²ΡΡΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΠΏΠΎΠ²ΡΠΎΡΠ½Π° ΠΏΠ°ΡΡΠΈΡΠΈΡΠ°.
ΠΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΏΠΎΠΌΠ°Π»ΠΈ Π·Π±ΠΈΡΠΊΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ
ΠΠΎ Π½Π΅ΠΊΠΎΠΈ ΡΠ»ΡΡΠ°ΠΈ, ΠΎΠ±Π΅ΠΌΠΎΡ Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Ρ Π΅ ΡΠ΅Π»Π°ΡΠΈΠ²Π½ΠΎ ΠΌΠ°Π», ΡΠ°ΠΊΠ° ΡΡΠΎ ΡΠ΅Π»ΠΎΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ΄ Π½ΠΈΠ² ΠΌΠΎΠΆΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π²ΠΊΠ»ΠΎΠΏΠ°Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π½Π° ΡΠ΅ΠΊΠΎΡ ΡΠ°Π·ΠΎΠ». ΠΠ° ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΊΠ°ΠΊΠΎ ΠΎΠ²Π°Π°, Kafka Streams ΡΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΊΠ»Π°ΡΠ°ΡΠ° GlobalKTable.
ΠΡΠΈΠΌΠ΅ΡΠΈΡΠ΅ Π½Π° GlobalKTable ΡΠ΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈ Π±ΠΈΠ΄Π΅ΡΡΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π³ΠΈ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠ° ΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π° ΡΠ΅ΠΊΠΎΡ ΠΎΠ΄ ΡΠ°Π·Π»ΠΈΡΠ΅. Π Π±ΠΈΠ΄Π΅ΡΡΠΈ ΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠ΅ ΠΏΡΠΈΡΡΡΠ½ΠΈ Π½Π° ΡΠ΅ΠΊΠΎΡ ΡΠ°Π·ΠΎΠ», Π½Π΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΡΠ²Π° ΠΏΡΠ΅Π½ΠΎΡΠΎΡ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ ΡΠΎ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ΅Π½ ΠΊΠ»ΡΡ Π·Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° Π΄Π° Π±ΠΈΠ΄Π΅ Π΄ΠΎΡΡΠ°ΠΏΠ΅Π½ Π·Π° ΡΠΈΡΠ΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΏΠΎΡΡΠ²Π°ΡΠ° Π±Π΅Π· ΠΊΠ»ΡΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π½Π° GlobalKTable. ΠΠ° ΡΠ΅ ββΠ²ΡΠ°ΡΠΈΠΌΠ΅ Π½Π° Π΅Π΄Π΅Π½ ΠΎΠ΄ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° Π΄Π° ΡΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°ΠΌΠ΅ ΠΎΠ²Π°Π° ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°.
ΠΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Π½Π° KStream ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Π½Π° GlobalKTable
ΠΠΎ ΠΏΠΎΡΡΠ΅ΠΊΡΠΈΡΠ° 5.3.2, ΠΈΠ·Π²ΡΡΠΈΠ²ΠΌΠ΅ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ° Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠΎΡ Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π° ΠΎΠ΄ ΠΊΡΠΏΡΠ²Π°ΡΠΈΡΠ΅. Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΠ΄ ΠΎΠ²Π°Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ° ΠΈΠ·Π³Π»Π΅Π΄Π°Π° ΠΎΡΠΏΡΠΈΠ»ΠΈΠΊΠ° Π²Π°ΠΊΠ°:
{customerId='074-09-3705', stockTicker='GUTM'}, 17
{customerId='037-34-5184', stockTicker='CORK'}, 16
ΠΠ°ΠΊΠΎ ΠΎΠ²ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΡΠ»ΡΠΆΠ΅Π° Π·Π° ΡΠ΅Π»ΡΠ°, ΡΠ΅ Π±Π΅ΡΠ΅ ΠΏΠΎΠΊΠΎΡΠΈΡΠ½ΠΎ Π΄ΠΎΠΊΠΎΠ»ΠΊΡ ΡΠ΅ ΠΏΡΠΈΠΊΠ°ΠΆΠ΅Π° ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΈ ΡΠ΅Π»ΠΎΡΠΎ ΠΈΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠ°ΡΠ°. ΠΠ° Π΄Π° Π³ΠΎ Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠ°ΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½ΠΎΡΠΌΠ°Π»Π½ΠΈ ΡΠΏΠΎΡΡΠ²Π°ΡΠ°, Π½ΠΎ ΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π΄Π²Π΅ ΠΊΠ»ΡΡΠ½ΠΈ ΠΌΠ°ΠΏΠΈΡΠ°ΡΠ° ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΠ°ΡΡΠΈΡΠΈΠΎΠ½ΠΈΡΠ°ΡΠ΅. Π‘ΠΎ GlobalKTable ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΡΡΠΎΡΠΎΡΠΈΡΠ΅ Π·Π° ΡΠ°ΠΊΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°, ΡΠ΅ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ countStream ΠΎΠ΄ ΡΠΏΠΈΡΠΎΠΊΠΎΡ 5.11 (ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΄Π΅ Π²ΠΎ src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) ΠΈ ΡΠ΅ Π³ΠΎ ΠΏΠΎΠ²ΡΠ·Π΅ΠΌΠ΅ ΡΠΎ Π΄Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π½Π° GlobalKTable.
ΠΠ΅ΡΠ΅ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°Π²ΠΌΠ΅ Π·Π° ΠΎΠ²Π° ΠΏΠΎΡΠ°Π½ΠΎ, ΠΏΠ° Π½Π΅ΠΌΠ° Π΄Π° Π³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΠ²Π°ΠΌ. ΠΠΎ, Π·Π°Π±Π΅Π»Π΅ΠΆΡΠ²Π°ΠΌ Π΄Π΅ΠΊΠ° ΠΊΠΎΠ΄ΠΎΡ Π²ΠΎ ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° toStream().map Π΅ Π°ΠΏΡΡΡΠ°Ρ
ΠΈΡΠ°Π½ Π²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π°ΠΌΠ΅ΡΡΠΎ Π²ΠΎ Π²Π³ΡΠ°Π΄Π΅Π½ Π»Π°ΠΌΠ±Π΄Π° ΠΈΠ·ΡΠ°Π· Π·Π°ΡΠ°Π΄ΠΈ ΡΠΈΡΠ»ΠΈΠ²ΠΎΡΡ.
Π‘Π»Π΅Π΄Π½ΠΈΠΎΡ ΡΠ΅ΠΊΠΎΡ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΡΠ°ΡΠ½Π°Ρ Π΄Π²Π° ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π½Π° GlobalKTable (ΠΏΡΠΈΠΊΠ°ΠΆΠ°Π½ΠΈΠΎΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΄Π΅ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) (Π‘ΠΏΠΈΡΠΎΠΊ 5.12).
ΠΠ΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΈΠΌΠ°ΡΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° ΠΈΠΌΠΈΡΠ°ΡΠ° Π½Π° ΡΠ΅ΠΌΠΈΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π½Π°Π±ΡΠΎΡΠ°Π½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ.
Π‘Π΅Π³Π° ΠΊΠΎΠ³Π° Π³ΠΈ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, ΠΎΡΡΠ°Π½ΡΠ²Π° ΡΠ°ΠΌΠΎ Π΄Π° Π³ΠΎ Π½Π°ΠΏΠΈΡΠ΅ΠΌΠ΅ ΠΊΠΎΠ΄ΠΎΡ Π·Π° Π²ΡΡΠΊΠ°ΡΠ° (ΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΄Π΅ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° src/main/java/bbejeck/chapter_5/GlobalKTableExample.java) (Π‘ΠΏΠΈΡΠΎΠΊ 5.13).
ΠΠ°ΠΊΠΎ ΠΈΠΌΠ° Π΄Π²Π΅ ΡΠΏΠΎΡΡΠ²Π°ΡΠ° Π²ΠΎ ΠΎΠ²ΠΎΡ ΠΊΠΎΠ΄, ΡΠΈΠ΅ ΡΠ΅ ΠΎΠΊΠΎΠ²Π°Π½ΠΈ Π±ΠΈΠ΄Π΅ΡΡΠΈ Π½ΠΈΡΡ Π΅Π΄Π΅Π½ ΠΎΠ΄ Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π½Π΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΠΎΡΠ΅Π±Π½ΠΎ. Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π°Π°Ρ Π½Π° ΠΊΡΠ°ΡΠΎΡ ΠΎΠ΄ ΡΠ΅Π»Π°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ°.
ΠΠΎΠ³Π° ΡΠ΅ ΡΠ° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ Π³ΠΎΡΠ½Π°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° Π·Π° ΠΏΡΠΈΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅, ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΊΠ°ΠΊΠΎ ΠΎΠ²Π°:
{customer='Barney, Smith' company="Exxon", transactions= 17}
Π‘ΡΡΡΠΈΠ½Π°ΡΠ° Π½Π΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠ°, Π½ΠΎ ΠΎΠ²ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΈΠ·Π³Π»Π΅Π΄Π°Π°Ρ ΠΏΠΎΡΠ°ΡΠ½ΠΈ.
ΠΠΊΠΎ ΠΎΠ΄Π±ΡΠΎΡΡΠ²Π°ΡΠ΅ Π΄ΠΎ ΠΠΎΠ³Π»Π°Π²ΡΠ΅ 4, Π²Π΅ΡΠ΅ ΡΡΠ΅ Π²ΠΈΠ΄Π΅Π»Π΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠΈΠΏΠΎΠ²ΠΈ Π½Π° Π²ΡΡΠΊΠΈ Π²ΠΎ Π°ΠΊΡΠΈΡΠ°. Π’ΠΈΠ΅ ΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ Π²ΠΎ ΡΠ°Π±Π΅Π»Π°ΡΠ°. 5.2. ΠΠ²Π°Π° ΡΠ°Π±Π΅Π»Π° Π³ΠΈ ΠΎΠ΄ΡΠ°Π·ΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ ΠΎΠ΄ Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° 1.0.0 Π½Π° Kafka Streams; ΠΠ΅ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ ΠΈΠ΄Π½ΠΈΡΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ°.
ΠΠ° Π΄Π° Π³ΠΈ Π·Π°Π²ΡΡΠΈΠΌΠ΅ ΡΠ°Π±ΠΎΡΠΈΡΠ΅, Π΄Π° Π³ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠΈΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅: ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ ΠΏΡΠ΅Π½ΠΎΡΠΈ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ (KStream) ΠΈ Π΄Π° Π³ΠΈ Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠ΅Π½ΠΎΡΠΈΡΠ΅ (KTable) ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π»ΠΎΠΊΠ°Π»Π½Π° ΡΠΎΡΡΠΎΡΠ±Π°. ΠΠ»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎ, Π°ΠΊΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π΅ Π΅ ΠΏΡΠ΅ΠΌΠ½ΠΎΠ³Ρ Π³ΠΎΠ»Π΅ΠΌΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ GlobalKTable. GlobalKTables Π³ΠΈ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠ° ΡΠΈΡΠ΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ Π½Π° ΡΠ΅ΠΊΠΎΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π΅Π½ ΡΠ°Π·ΠΎΠ» Π½Π° Kafka Streams, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°ΡΡΠΈ Π΄Π΅ΠΊΠ° ΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠ΅ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ Π±Π΅Π· ΡΠ°Π·Π»ΠΈΠΊΠ° Π½Π° ΠΊΠΎΡΠ° ΠΏΠ°ΡΡΠΈΡΠΈΡΠ° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° ΠΊΠ»ΡΡΠΎΡ.
Π‘Π»Π΅Π΄Π½ΠΎ ΡΠ΅ ΡΠ° Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° ΠΠ°ΡΠΊΠ° ΡΠ΅ΠΊΠΎΠ²ΠΈ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΡΠ° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΈ Π½Π°Π±ΡΡΠ΄ΡΠ²Π°ΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° ΡΠΎΡΡΠΎΡΠ±Π°ΡΠ° Π±Π΅Π· Π΄Π° ΡΡΠΎΡΠΈΠΌΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ ΡΠ΅ΠΌΠ°ΡΠ° Π½Π° ΠΠ°ΡΠΊΠ°.
5.3.5. Π‘ΠΎΡΡΠΎΡΠ±Π° ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ°ΡΠ°
ΠΠ΅ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈΠ²ΠΌΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΈ Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ ΡΠΎΡΡΠΎΡΠ±Π° ΠΈ ΡΠ΅ΠΊΠΎΠ³Π°Ρ Π³ΠΈ ΠΈΠ·Π½Π΅ΡΡΠ²Π°ΠΌΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° (Π·Π° ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΡΠ΅Π»ΠΈ) ΠΈΠ»ΠΈ Π³ΠΈ ΠΏΠΈΡΡΠ²Π°ΠΌΠ΅ Π½Π° ΡΠ΅ΠΌΠ° (Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΠ΅Π»ΠΈ). ΠΠΎΠ³Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π½Π° ΡΠ΅ΠΌΠ°, ΡΡΠ΅Π±Π° Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΏΠΎΡΡΠΎΡΡΠ²Π°Ρ Π½Π° ΠΠ°ΡΠΊΠ° Π·Π° Π΄Π° Π³ΠΈ Π²ΠΈΠ΄ΠΈΡΠ΅.
Π§ΠΈΡΠ°ΡΠ΅ΡΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ ΡΠ΅ΠΌΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΌΠ΅ΡΠ° Π·Π° Π²ΠΈΠ΄ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΡΠ°Π²ΠΎΠ²ΠΈ. ΠΠ° Π½Π°ΡΠΈ ΡΠ΅Π»ΠΈ, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ°ΡΠ° Π·Π° ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΏΠΎΠ³Π»Π΅Π΄ ΠΎΠ΄ ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΡΠ°: β... ΡΠΈΠ·ΠΈΡΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΡΠΎ Π³ΠΈ ΡΠΎΠ΄ΡΠΆΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΠ΄ Π±Π°ΡΠ°ΡΠ΅ΡΠΎ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ Π»ΠΎΠΊΠ°Π»Π½Π° ΠΊΠΎΠΏΠΈΡΠ° ΠΎΠ΄ Π΄Π°Π»Π΅ΡΠΈΠ½ΡΠΊΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠ΄ ΡΠ΅Π΄ΠΎΠ²ΠΈ ΠΈ/ΠΈΠ»ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΎΠ΄ ΡΠ°Π±Π΅Π»Π° ΠΈΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΎΠ΄ ΡΠΏΠΎΡΡΠ²Π°ΡΠ΅, ΠΈΠ»ΠΈ ΡΡΠΌΠ°ΡΠ½Π° ΡΠ°Π±Π΅Π»Π° Π΄ΠΎΠ±ΠΈΠ΅Π½Π° ΠΏΡΠ΅ΠΊΡ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅β (https://en.wikipedia.org/wiki /Materialized_view).
Kafka Streams ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ ΠΏΡΠ°ΡΠ°ΡΠ° Π²ΠΎ Π΄ΡΠΆΠ°Π²Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠΈ, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΡΠΈ Π²ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π΄Π° Π³ΠΈ ΡΠΈΡΠ°ΡΠ΅ ΠΎΠ²ΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄ΠΈ. ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ Π΄Π΅ΠΊΠ° Π±Π°ΡΠ°ΡΠ΅ΡΠΎ Π΄ΠΎ Π΄ΡΠΆΠ°Π²Π½Π°ΡΠ° ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ° Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅. ΠΠ²Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π΄Π΅ΠΊΠ° Π½Π΅ΠΌΠ° Π΄Π° ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΡΠ΅ Π³ΡΠΈΠΆΠΈΡΠ΅ Π·Π° ΡΠ»ΡΡΠ°ΡΠ½ΠΎ Π΄Π° ΡΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΡΡΠΎΡΠ±Π°ΡΠ° Π½Π΅ΠΊΠΎΠ½Π·ΠΈΡΡΠ΅Π½ΡΠ½Π° Π΄ΠΎΠ΄Π΅ΠΊΠ° Π²Π°ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ.
Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ°ΡΡΠ²Π°Π°Ρ Π΄ΡΠΆΠ°Π²Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠΈ Π΅ Π²Π°ΠΆΠ½Π°. ΠΠ²Π° Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠ°Π±Π»Π° Π±Π΅Π· ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ Π΄Π° ΠΏΡΠ΅Π·Π΅ΠΌΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ ΠΏΠΎΡΡΠΎΡΡΠ²Π°ΡΠΎΡ Π½Π° ΠΠ°ΡΠΊΠ°. ΠΡΡΠΎ ΡΠ°ΠΊΠ°, ΡΠ° Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π° Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎΡΡΠ° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°, ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ°ΠΊΡΠΎΡ ΡΡΠΎ Π½Π΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΈΡΡΠ²Π°Π°Ρ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ:
- Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π»ΠΎΠΊΠ°Π»ΠΈΡΠ΅ΡΠΎΡ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅, ΡΠΈΠ΅ ΠΌΠΎΠΆΠ°Ρ Π±ΡΠ·ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏΠ°Ρ;
- Π£ΠΌΠ½ΠΎΠΆΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π΅ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°Π½ΠΎ, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π½Π΅ Π΅ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅.
ΠΠ»Π°Π²Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΡΡΠΎ ΡΠ°ΠΊΠ°ΠΌ Π΄Π° ΡΠ° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ Π΅ Π΄Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π΄Π° ΡΠ° ΠΏΠΎΠ±Π°ΡΠ°ΡΠ΅ ΡΠΎΡΡΠΎΡΠ±Π°ΡΠ° ΠΎΠ΄ Π²Π°ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ ΡΡΠΎ Π²ΠΈ Π³ΠΈ Π΄Π°Π²Π° ΠΎΠ²Π° Π½Π΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π±ΠΈΠ΄Π°Ρ ΠΏΡΠ΅ΡΠ΅Π½Π΅ΡΠΈ. ΠΠ°ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΡΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ ΠΠ°ΡΠΊΠ° ΠΈ Π΄Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΠΏΡΠ°ΡΠ°ΡΠ΅ Π΄ΡΠΆΠ°Π²Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠΈ ΡΠΎ ΠΈΡΡΠΈΠΎΡ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ. ΠΠΈΡΠ΅ΠΊΡΠ½ΠΈΡΠ΅ Π±Π°ΡΠ°ΡΠ° Π΄ΠΎ Π΄ΡΠΆΠ°Π²Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠΈ Π·Π½Π°ΡΠ°Ρ ΠΏΠΎΠΌΠ°Π»ΠΊΡ ΠΊΠΎΠ΄ (Π±Π΅Π· ΠΏΠΎΡΡΠΎΡΡΠ²Π°Ρ) ΠΈ ΠΏΠΎΠΌΠ°Π»ΠΊΡ ΡΠΎΡΡΠ²Π΅Ρ (Π½Π΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π° ΠΎΠ΄ ΡΠ°Π±Π΅Π»Π° ΡΠΎ Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅).
ΠΠΏΡΠ°ΡΠΈΠ²ΠΌΠ΅ Π΄ΠΎΡΡΠ° ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ ΠΎΠ²Π° ΠΏΠΎΠ³Π»Π°Π²ΡΠ΅, ΠΏΠ° Π·Π°ΡΠ΅Π³Π° ΡΠ΅ ΡΠ° ΠΎΡΡΠ°Π²ΠΈΠΌΠ΅ Π½Π°ΡΠ°ΡΠ° Π΄ΠΈΡΠΊΡΡΠΈΡΠ° Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ ΠΏΡΠ°ΡΠ°ΡΠ° ΠΏΡΠΎΡΠΈΠ² Π΄ΡΠΆΠ°Π²Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠΈ. ΠΠΎ, Π½Π΅ Π³ΡΠΈΠΆΠ΅ΡΠ΅ ΡΠ΅: Π²ΠΎ ΠΠΎΠ³Π»Π°Π²ΡΠ΅ 9, ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΠ°Π±Π»Π° ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ ΠΏΡΠ°ΡΠ°ΡΠ°. ΠΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅ ΠΎΠ΄ ΠΎΠ²Π° ΠΈ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΏΠΎΠ³Π»Π°Π²ΡΠ° Π·Π° Π΄Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ ΠΏΡΠ°ΡΠ°ΡΠ° ΠΈ ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ Π²ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Kafka Streams.
ΠΡΠ°ΡΠΎΠΊ ΠΏΡΠ΅Π³Π»Π΅Π΄
- ΠΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Π½Π° KStream ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π°Π°Ρ ΡΠ΅ΠΊΠΎΠ²ΠΈ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ, ΡΠΏΠΎΡΠ΅Π΄Π»ΠΈΠ²ΠΈ ΡΠΎ Π²ΠΌΠ΅ΡΠ½ΡΠ²Π°ΡΠ°ΡΠ° Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Π½Π° KTable ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π°Π°Ρ ΡΠ΅ΠΊΠΎΠ²ΠΈ Π·Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅, ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ°ΠΊΠΎ Π°ΠΆΡΡΠΈΡΠ°ΡΠ° Π½Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ KTable Π½Π΅ ΡΠ°ΡΡΠ΅, ΡΡΠ°ΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΡΠ²Π°Π°Ρ ΡΠΎ Π½ΠΎΠ²ΠΈ.
- ΠΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Π½Π° KTable ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ°.
- ΠΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ Π·Π±ΠΈΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΊΠΎΡΠΈ.
- ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Π½Π° GlobalKTable, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΈΡΡΠ°ΠΏΠΈΡΠ΅ Π΄ΠΎ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΊΠ°Π΄Π΅ Π±ΠΈΠ»ΠΎ Π²ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°, Π±Π΅Π· ΠΎΠ³Π»Π΅Π΄ Π½Π° ΠΏΠ°ΡΡΠΈΡΠΈΠΎΠ½ΠΈΡΠ°ΡΠ΅ΡΠΎ.
- ΠΠΎΠΆΠ½ΠΈ ΡΠ΅ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ KStream, KTable ΠΈ GlobalKTable.
ΠΠΎΡΠ΅Π³Π°, ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ°Π²ΠΌΠ΅ Π½Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° Kafka Streams ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ DSL Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ KStream. ΠΠ°ΠΊΠΎ ΠΏΡΠΈΡΡΠ°ΠΏΠΎΡ Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΡΠ΅Π΄Π½ΠΈ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ·Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡ. Π Π°Π±ΠΎΡΠ°ΡΠ° ΡΠΎ DSL KStream Π·Π½Π°ΡΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ·Π½ΠΎΡΡΠ° Π½Π° Π²Π°ΡΠΈΠΎΡ ΠΊΠΎΠ΄ ΡΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ΅ΠΏΠ΅Π½ΠΎΡ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π°. ΠΠΎ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΏΠΎΠ³Π»Π°Π²ΡΠ΅, ΡΠ΅ Π³ΠΎ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ API-ΡΠΎ Π½Π° ΡΠ°Π·ΠΎΠ»ΠΎΡ Π·Π° ΡΠ°ΠΊΡΠ²Π°Ρ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΈ ΡΠ΅ ΡΠ΅ ΠΎΠ±ΠΈΠ΄Π΅ΠΌΠ΅ ΡΠΎ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΠΈ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ ΠΏΠΎΠ΄ΠΎΠ»Π³ΠΈ ΠΎΡΠΊΠΎΠ»ΠΊΡ ΡΡΠΎ Π±Π΅Π° ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ, Π½ΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ ΡΠ΅ΡΠΈΡΠΈ ΡΠ΅ΠΊΠΎΡ ΡΠ°Π·ΠΎΠ» Π½Π° ΡΠΏΡΠ°Π²ΡΠ²Π°Ρ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½ΠΈ ΡΡΠ΅Π±Π°.
β ΠΠΎΠ²Π΅ΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ Π·Π° ΠΊΠ½ΠΈΠ³Π°ΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΠ΄Π΅ΡΠ΅ Π½Π°
β ΠΠ° Π₯Π°Π±ΡΠΎΠΆΠΈΡΠ΅Π»ΠΈ 25% ΠΏΠΎΠΏΡΡΡ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΊΡΠΏΠΎΠ½ - ΠΠ°ΡΠΊΠ° ΠΏΠΎΡΠΎΡΠΈ
β ΠΠΎ ΡΠΏΠ»Π°ΡΠ° Π½Π° Ρ
Π°ΡΡΠΈΠ΅Π½Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΠΊΠ½ΠΈΠ³Π°ΡΠ°, Π΅Π»Π΅ΠΊΡΡΠΎΠ½ΡΠΊΠ° ΠΊΠ½ΠΈΠ³Π° ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΈΡΠΏΡΠ°ΡΠ΅Π½Π° ΠΏΠΎ Π΅-ΠΏΠΎΡΡΠ°.
ΠΠ·Π²ΠΎΡ: www.habr.com