Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Apache flink 具有键控状态的自定义分区_Apache Flink_Flink Streaming - Fatal编程技术网

Apache flink 具有键控状态的自定义分区

Apache flink 具有键控状态的自定义分区,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我有自己的分区技术,为数据流元组生成键,这些键的范围等于集群中的节点数,例如,如果我将并行度设置为4,则生成的键将为0、1、2和3,依此类推,然后每个键都应分区到同一节点,以使用键控状态执行更多键控处理 发生了什么:我已经使用keyBy实现了我的逻辑,这样我就可以使用一个键控状态,但是它有一个很大的偏差,一些节点没有收到任何记录,而其他节点收到了多个记录。我尝试过使用自定义分区,它按照我的要求进行了物理分区,但是如果不使用keyBy,我就不能使用keyed状态 是否有一种方法可以控制偏斜或强制在

我有自己的分区技术,为数据流元组生成键,这些键的范围等于集群中的节点数,例如,如果我将并行度设置为4,则生成的键将为0、1、2和3,依此类推,然后每个键都应分区到同一节点,以使用键控状态执行更多键控处理

发生了什么:我已经使用keyBy实现了我的逻辑,这样我就可以使用一个键控状态,但是它有一个很大的偏差,一些节点没有收到任何记录,而其他节点收到了多个记录。我尝试过使用自定义分区,它按照我的要求进行了物理分区,但是如果不使用keyBy,我就不能使用keyed状态


是否有一种方法可以控制偏斜或强制在可用节点上并行化关键点?或者有没有办法覆盖keyBy中使用的分区技术?或者有没有一种方法可以在自定义分区中使用键控状态?

据我所知,对于键空间大小(大致)等于并行性的情况,没有一种干净的解决方案。一种有效的蛮力方法是编写您自己的
KeySelector
函数,并让它计算每个分区的键,使这些键属于分配给不同工作者的键组,但要想知道如何做到这一点并不简单

关于这样做,已经有过讨论