哈希数据交换如何与 Flink Tables 一起工作?

How does the hash data exchange works with Flink Tables?

我有两个 Table 源使用 Flink 收听 Kafka 主题。在生成的图上,这两个表之间连接的数据交换是“散列”。但是,我没有找到任何有关哈希如何工作(在特定字段上?)以及如何配置它的信息?

在 Table 联接的情况下,哈希数据交换基于联接的相等子句。例如,如果您正在做

SELECT *
FROM A, B
WHERE A.id = B.id

然后来自两个流的流记录将在 id 字段上进行哈希处理。这将保证来自 A 和 B 的具有相同 id 值的所有记录将被发送到相同的下游实例。 (这就是为什么 Flink 只支持带有相等谓词的连接——它们更容易扩展。)

在内部这变成了来自 Flink 的 DataStream API 的 keyBy。 Table/SQL GROUP BY 的工作方式相同。