Apache kafka KSQL中的多个键或外键

Apache kafka KSQL中的多个键或外键,apache-kafka,ksqldb,Apache Kafka,Ksqldb,如何在KSQL中执行1->N关系 我有一个表的主键是bob_id,另一个表有多行,主键是foo_id,外键是bob_id 如何使用KSQL复制这种情况 据我所知,KSQL没有外键 除非列是主键,否则我们不能在ksql中联接表 重新分区不起作用,因为我正在使用表not streams 您可以根据需要重新划分主题以更改密钥 关于如何在KSQL中执行不同类型的联接,您可以根据需要重新分配主题以更改键 关于如何在KSQL中执行不同类型的联接,我不确定您是否能够在实践中执行,因为我目前在远程执行某些操作时

如何在KSQL中执行1->N关系

我有一个表的主键是bob_id,另一个表有多行,主键是foo_id,外键是bob_id

如何使用KSQL复制这种情况

据我所知,KSQL没有外键

除非列是主键,否则我们不能在ksql中联接表


重新分区不起作用,因为我正在使用表not streams

您可以根据需要重新划分主题以更改密钥


关于如何在KSQL中执行不同类型的联接,您可以根据需要重新分配主题以更改键


关于如何在KSQL中执行不同类型的联接,我不确定您是否能够在实践中执行,因为我目前在远程执行某些操作时遇到了一些问题

但我会解释在放弃之前你应该尝试什么。我真的希望我们都能找到办法

重新分区不起作用,因为我正在使用表not streams

首先,这不是关于重新划分,至少根据你的解释。这是关于重新键入的。重新分区意味着改变分区的数量,以对齐多个集合(表或流),从而能够连接它们

因此,当您需要重新设置密钥时,可以首先创建一个重新设置密钥的流(例如,
create AS SELECT…PARTITION BY
),然后从该流创建一个表。最好是直接从主题创建表,因为它也将是

然后,虽然不支持1对多联接,但您似乎没有要求它们。因此,一个
左外
连接应该可以

但这甚至不是我决定回答这个问题的主要原因。我想补充一点,因为我自己对此感到兴奋,卡夫卡已经开始流行了。

有了它,ksqlDB的类似功能也正在开发中。

我不确定您是否能够在实践中做到这一点,因为我目前在远程执行某些操作时遇到了一些问题

但我会解释在放弃之前你应该尝试什么。我真的希望我们都能找到办法

重新分区不起作用,因为我正在使用表not streams

首先,这不是关于重新划分,至少根据你的解释。这是关于重新键入的。重新分区意味着改变分区的数量,以对齐多个集合(表或流),从而能够连接它们

因此,当您需要重新设置密钥时,可以首先创建一个重新设置密钥的流(例如,
create AS SELECT…PARTITION BY
),然后从该流创建一个表。最好是直接从主题创建表,因为它也将是

然后,虽然不支持1对多联接,但您似乎没有要求它们。因此,一个
左外
连接应该可以

但这甚至不是我决定回答这个问题的主要原因。我想补充一点,因为我自己对此感到兴奋,卡夫卡已经开始流行了。

有了它,ksqlDB类似的东西也在研究中。

如果我重新划分主题,那么数据就会丢失,比如,我对每个键都有一个1:n的关系,我需要它,所以(主键+repitive外键)必须是键。我们还可以在流中更新吗?[在这种情况下,他们使用的是streams,但它保留的数据具有相同的主键…这正常吗?还是我做错了什么?而且stream有创建流…选择…分区依据…但我使用的是表,而表没有分区依据子句,有没有办法在ksql中实现1:n关系?这个答案是错误的ading,@ayshwarya是正确的。在当前的文档中,它明确指出不支持一对多联接:如果我重新划分主题,那么数据将丢失,比如,我对每个键都有一个1:n的关系,我需要它,所以(主键+repitive外键)必须是键..我们还可以在流中更新吗?[在这种情况下,他们使用的是streams,但它保留的数据具有相同的主键…这正常吗?还是我做错了什么?而且stream有创建流…选择…分区依据…但我使用的是表,而表没有分区依据子句,有没有办法在ksql中实现1:n关系?这个答案是错误的ading,@ayshwarya是正确的。在当前文档中,它明确表示不支持一对多联接: