Chen Qin created FLINK-16392:
--------------------------------
Summary: oneside sorted cache in intervaljoin
Key: FLINK-16392
URL:
https://issues.apache.org/jira/browse/FLINK-16392 Project: Flink
Issue Type: Improvement
Components: API / DataStream
Affects Versions: 1.10.0
Reporter: Chen Qin
Fix For: 1.11.0
IntervalJoin is getting lots of usecases. Those use cases shares following similar pattern
* left stream pulled from static dataset periodically
* lookup time range is very large (days weeks)
* right stream is web traffic with high QPS
In current interval join implementation, we treat both streams equal. Specifically as rocksdb fetch and update getting more expensive, performance took hit and unblock large use cases.
In proposed implementation, we plan to introduce two changes
* allow user opt-in in ProcessJoinFunction if they want to skip scan when intervaljoin operator receive events from left stream(static data set)
* build sortedMap from otherBuffer of each seen key granularity
** expedite right stream lookup of left buffers without access rocksdb everytime
** if a key see event from left side, it cleanup buffer and load buffer from right side
Open discussion
* how to control cache size?
** TBD
* how to avoid dirty cache
** if a given key see insertion from other side, cache will be cleared for that key and rebuild. This is a small overhead to populate cache, compare with current rocksdb implemenation, we need do full loop at every event. It saves on bucket scan logic.
* what happens when checkpoint/restore
** state still persists in statebackend, clear cache and rebuild of each new key seen.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)