Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在ApacheFlink中将关系数据存储为状态并通过属性进行查询_Scala_Apache Flink_Flink Streaming - Fatal编程技术网

Scala 在ApacheFlink中将关系数据存储为状态并通过属性进行查询

Scala 在ApacheFlink中将关系数据存储为状态并通过属性进行查询,scala,apache-flink,flink-streaming,Scala,Apache Flink,Flink Streaming,我有一个数据库,表为T1id、name、age和T2id、subject。 Flink使用类似的方式将数据库中的所有更新作为事件流接收。这些表相互关联,可以通过在id上连接T1和T2来提取所需的数据。目前,数据库的整个状态存储在Flink MapState中,id作为键。现在的问题是,我需要根据T1中的名称选择行,而不使用id。似乎我需要T1name上的索引来加快速度。是否有任何方法可以自动为其编制索引,而无需手动为每个表创建索引。推荐的方法是什么?。我知道,但我需要表更新支持。顺便说一下,我用

我有一个数据库,表为T1id、name、age和T2id、subject。
Flink使用类似的方式将数据库中的所有更新作为事件流接收。这些表相互关联,可以通过在id上连接T1和T2来提取所需的数据。目前,数据库的整个状态存储在Flink MapState中,id作为键。现在的问题是,我需要根据T1中的名称选择行,而不使用id。似乎我需要T1name上的索引来加快速度。是否有任何方法可以自动为其编制索引,而无需手动为每个表创建索引。推荐的方法是什么?。我知道,但我需要表更新支持。顺便说一下,我用Flink和Scala。任何提示/建议都将不胜感激。

我的理解是,您正在连接T1和T2,并在MapState中存储来自这两个流的数据的一些表示形式,这些数据处于键控状态,由id键控。听起来T1和T2似乎在随时间而变化,您希望能够通过指定名称随时以交互方式查询联接

一个想法是以您想要选择的名称进行广播,并使用KeyedBroadcastProcessFunction对其进行处理。在processBroadcastElement方法中,您可以使用ctx.applyToKeyedState通过从MapState记录中提取数据来计算结果,MapState记录必须保存在此运算符中。我猜想您会希望使用这些名称作为这些MapState记录中的键,这样您就不必遍历每个映射中的所有条目来查找感兴趣的项

您将在中找到类似于此模式的示例