在kafka中,您可以在producer上设置属性来压缩键和值。 compression.codec
此参数允许您为此生产者生成的所有数据指定压缩编解码器。有效值为“none”、“gzip”和“snappy”。
http://kafka.apache.org/documentation.html#producerconfigs
当使用汇合平台时,我可以使用 KafkaAvroSerialization
序列化程序。如果我定义 avro.codec
使用Kafka的压缩有什么意义吗?反之亦然? avro.codec
用于压缩块的压缩编解码器的名称,以字符串形式。实现需要支持以下编解码器:“null”和“deflate”。如果没有编解码器,则假定为“空”。下面将详细介绍这些编解码器。
https://avro.apache.org/docs/1.7.7/spec.html#object+容器+文件
1条答案
按热度按时间unguejic1#
虽然kafkaavroserialization允许您使用avro,但在这样做时,您实际上不能使用avro.codec。
为什么?因为avro.codec由avro的datafilewriter使用,而在kafkaavroserialization中没有使用(它直接使用datumwriter生成byte[]记录,而不是文件)。
所以你只能得到非压缩的记录,应该在producer中设置压缩编码解码器。这也意味着生产者有机会压缩包含多条消息的缓冲区,从而提高压缩效率。