我在Kafka有一个场景,有两个主题:a和b。主题a的消费者在线(需要快速消费数据),主题b的消费者离线。由于topic b的消费者处于离线状态,我现在不需要缓存任何与topic b相关的消息,而是希望topic a获得整个缓存。是否可以禁用某些Kafka主题的缓存?
edit:我所说的缓存是指消息存储在内存中,消费者也从内存(而不是磁盘)读取。在这个场景中,我希望与主题a相关的消息被缓存在内存中。与主题b相关的消息不必缓存在内存中。我想让主题a使用内存中的空间,而这个空间本来是给主题b的
我在Kafka有一个场景,有两个主题:a和b。主题a的消费者在线(需要快速消费数据),主题b的消费者离线。由于topic b的消费者处于离线状态,我现在不需要缓存任何与topic b相关的消息,而是希望topic a获得整个缓存。是否可以禁用某些Kafka主题的缓存?
edit:我所说的缓存是指消息存储在内存中,消费者也从内存(而不是磁盘)读取。在这个场景中,我希望与主题a相关的消息被缓存在内存中。与主题b相关的消息不必缓存在内存中。我想让主题a使用内存中的空间,而这个空间本来是给主题b的
2条答案
按热度按时间axr492tv1#
kafka在很大程度上依赖于文件系统来存储和缓存消息。kafka中唯一可用于缓存的配置是用于缓冲传入消息的客户端流缓冲区大小--
cache.max.bytes.buffering
.tv6aics12#
您可以为特定使用者禁用缓存:
如果要禁用kafka使用者的缓存,可以设置
spark.streaming.kafka.consumer.cache.enabled
至false
.从[spark streaming+kafka integration guide]中,我建议您按照它进行进一步的说明。