It is currently the later where all the data is read and then filtered within the pipeline. Note that this doesn't mean that all the data is loaded into memory as the way that the join is done is dependent on the Runner that is powering the pipeline.
Kenn had shared this doc which is starting to look at integrating Runners and IO into the SQL shell and attempting to start defining a way to map properties from SQL onto the IO connector but it seems natural that the filter would get pushed down to the IO connector as well. Please take a look and feel free to comment.
We are currently playing with Apache Beam’s SQL extension on top of Flink. One of the features that we were interested is the SQL Predicate Pushdown feature that Spark provides. Does Beam support that?
I have an unbounded dataset that I want to join with some static reference data stored in a database. Will beam perform the logic of figuring out all the unique keys in the window and push it down to the jdbc source or will it bring all the data from the jdbc source into memory and then perform the join?