静态和流数据帧之间的 Spark 结构化流连接

问题描述 投票:0回答:1

我正在阅读有关 Spark 结构化流连接的信息,并遇到了静态到流数据集支持的连接类型。我有一个问题,为什么不支持它,因为据我了解,在给定的时间点,流数据帧的行为类似于静态,当我们将静态与流结合起来时,它应该可以工作。如果支持以下

  • 当左侧是流式 DataFrame 时,左外连接
  • 当右侧是流式 DataFrame 时的右外连接

如果我们更改数据帧的方向,则不支持它,也不支持完全外连接。让我知道我在这里缺少什么。本质上我想了解它不被支持的原因是什么,到底发生了什么阻止了 Spark 支持它。

apache-spark spark-streaming
1个回答
0
投票

以左外连接为例,其中左表是流,右表是静态的。假设我们的左(流)表看起来像这样,当您想要执行右外连接时。

身份证 价值
1 值1
3 值3

现在,假设正确的(静态)数据框如下所示:

身份证 其他价值
1 其他值1
2 其他值2
3 其他价值3

如果我们能够及时冻结流表,并进行连接,它会看起来像这样:

ID_x 价值 ID_y 其他价值
1 值1 1 其他值1
2 其他值2
3 值3 3 其他价值3

现在流传送以下记录:

身份证 价值
2 值2

那么这个应该如何加入呢?唯一的选择是“更新”连接中的值,而不是简单地追加。因为流数据被设计为仅追加,所以这破坏了连接的机制。连接中的其中一行(ID_x 为 NULL 且 ID_y 为 2 的第二行)必须从数据集中清除,但它已在连接中传递。 这就是为什么这是不可能的。这不是一个技术挑战,而是一个逻辑挑战。

© www.soinside.com 2019 - 2024. All rights reserved.