Table/SQL for most, DataStream for controlboth unified stream+batch; both lazy
tables via SQL DDL + connectorWITH ('connector'='kafka'...); WATERMARK for event-time
execute_insert triggers the jobTable; env.execute() for DataStream
windowing TVFsTUMBLE / HOP / CUMULATE / SESSION over an event-time column
pandas UDFs are fastvectorized vs row-at-a-time Python
key_by before keyed opsrequired for windows/reduce/keyed state
keyed state in process functionsValueState/ListState/MapState, per key
enable_checkpointing for exactly-onceor a failure loses state
from/to_data_stream to bridgeSQL for relational work, DataStream for custom logic