在Confluent Python Avro Producer中指定压缩类型

时间:2018-03-21 01:25:11

标签: python compression avro kafka-producer-api confluent-kafka

在Confluent' Kafka(python)中使用AvroProducer时,有没有办法在生产者配置中指定compression.type

我尝试了以下内容:

from confluent_kafka import avro
from confluent_kafka.avro import AvroProducer

from myconfigs import BOOTSTRAP_SERVER, SCHEMA_REGISTRY_URL, KEY_SCHEMA, VALUE_SCHEMA

avroProducer = AvroProducer({'bootstrap.servers': BOOTSTRAP_SERVER, 'schema.registry.url': SCHEMA_REGISTRY_URL, 'compression.type': 'gzip'},
                            default_key_schema=KEY_SCHEMA, default_value_schema=VALUE_SCHEMA)

运行此错误时出现以下错误:

Traceback (most recent call last):
  File "confluent_click.py", line 47, in <module>
default_key_schema=KEY_SCHEMA, default_value_schema=VALUE_SCHEMA)
  File "/usr/local/lib/python3.6/site-packages/confluent_kafka/avro/__init__.py", line 38, in __init__
    super(AvroProducer, self).__init__(config)
cimpl.KafkaException: KafkaError{code=_INVALID_ARG,val=-186,str="No such configuration property: "compression.type""}

还尝试将compression_type = 'gzip'指定为AvroProducer()作为

的参数
avroProducer = AvroProducer({'bootstrap.servers': BOOTSTRAP_SERVER, 'schema.registry.url': SCHEMA_REGISTRY_URL},
                            default_key_schema=KEY_SCHEMA, default_value_schema=VALUE_SCHEMA, compression_type='gzip')

我没想到这会成功,但事实并非如此。

Traceback (most recent call last):
  File "confluent_click.py", line 47, in <module>
    default_key_schema=KEY_SCHEMA, default_value_schema=VALUE_SCHEMA, compression_type='gzip')
TypeError: __init__() got an unexpected keyword argument 'compression_type'

如何在制作人中指定compression.type?我无法找到AvroProducer的文档。

1 个答案:

答案 0 :(得分:1)

confluent-kafka-python用于设置压缩类型的配置属性由于历史原因而被称为compression.codec(librdkafka,它早于当前Java客户端,基于其在原始Scala客户端上的初始配置属性,使用compression.codec)。

avroProducer = AvroProducer({'bootstrap.servers': BOOTSTRAP_SERVER, 'schema.registry.url': SCHEMA_REGISTRY_URL, 'compression.codec': 'gzip'},
                            default_key_schema=KEY_SCHEMA, default_value_schema=VALUE_SCHEMA)

注意:confluent-kafka-python的v0.11.4版本添加了compression.type别名。

此处的配置设置完整列表:https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md