我正在使用一个Flink流式Java应用程序,输入源为Kafka。在我的应用程序中总共使用了4个流。一个是主数据流,另一个3个用于广播流。
我加入了使用任何一种类型的三个广播流。我已经作为流B广播,并且能够在广播过程函数上下文状态(即在processBroadcastElement())中接收。
我的问题是,
>
是否可以在广播状态下存储大数据?
Memory: 8 GB
Disk Size: 20-25 GB
注意:根据我的理解,Flink广播状态在运行时保存在内存中(这意味着广播状态不会存储在rocksdb中),并且广播流用作低吞吐量事件流。因为当前RocksDB状态后端不能用于操作员状态。
广播状态的工作副本始终在堆上;不在RocksDB。因此,它必须足够小,以适应内存。此外,每个实例将把所有的广播状态复制到它的检查点中,因此所有的检查点和保存点将有广播状态的n个副本(其中n是并行度)。
如果您能够对此数据进行密钥分区,那么您可能不需要广播它。听起来可能是每个雇员的数据,可以通过EmployeeID进行键控。但如果不是,那么您就必须将它保持得足够小,以适应内存。
null 其中lambda1、2等是条件检查函数,例如 但不知什么原因对我不起作用,也许还有其他方法?正如我从文档(https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/side_output.html)中了解到的,OutputTag用于创建标记为tag的附加消息。还是我错了?
有1个高通量Kafka流定义如下 上述窗口操作符的水印正确转发。 上述窗口操作符中的需要使用一些保存在某些S3文件中的信息来丰富。S3文件很少更新。 S3文件作为流读取,然后广播以丰富中的元素。 然后连接这两个流,用类型的元素来丰富类型的所有元素。 有2个输入。其中之一是不断转发水印,但广播流没有任何时间信息或水印。这导致EnrichedAProcess的水印根本无法转发,因为它的一个输入没有传入
下面是我的流处理的伪代码。 上面的代码流程正在创建多个文件,我猜每个文件都有不同窗口的记录。例如,每个文件中的记录都有时间戳,范围在30-40秒之间,而窗口时间只有10秒。我预期的输出模式是将每个窗口数据写入单独的文件。对此的任何引用或输入都会有很大帮助。
我有一个管道,我在其中对事件流应用转换规则(从广播状态);当我运行广播时 我已附上两种情况的快照: 顶部行显示来自Kafka的流消耗事件,底部行显示消耗的规则
我尝试在我的flink应用程序中使用广播状态模式,但经过一些研究,我做了以下工作: 在中,我读取数据,并根据来自的数据对数据进行一些逻辑处理并发出一些元素。基本上,我使用就像广播状态模式一样。我没有专门使用广播,因为没有简单的方法可以从访问我的某些状态。由于我的配置流被用作清理状态的指示符,我在我的中拥有。 流是<代码>。keyBy所以我不希望出现并行性问题 我的问题是,还需要广播哪些案例?在什么
我有一个流(KafkaMSG流到一个主题上),有一个flinkKafka消费者,我注意到一个有趣的行为,我想解决这个问题。 当数据正在流入时,如果它在窗口“完成”之前停止,或者如果数据结束(在几个窗口之后)并且没有到达窗口的末尾,则管道的其余部分不会触发。 流程示例: 我正在使用的Flink Kafka消费者010与env时间特性设置为事件时间。和consumer.assign时间戳和水印(新周期