推送kafka或许会丢数据的情况——如何传输单条大于1M的数据

492 阅读1分钟

在kafka的默认配置下,限制了数据传输的大小(默认情况下为1M) 网络数据采集与提取,有时候会超过这个1M限制

image.png

一.修改kafka的配置文件

1、知道自己的数据量大概范围,联系大数据运维,修改对应的topic配置。

推送数据时,需要知道kafka的结果,代码如下:

future = producer.send(topic, json.dumps(item).encode('utf-8'))

result = future.get(timeout= 10)

print(result)

或者

producer.send(topic, json.dumps(item).encode('utf-8')).get()

2、测算大小

import sys
sys.getsizeof(json_raw)
>>> 2252688

if sys.getsizeof(json_raw) > 1048576:
    logger.error("联系大数据运维,从1M,调大这个项目的kafka topic容量")

二、修改程序中的kafka配置

1、数据采集生产者

producer = KafkaProducer(
    bootstrap_servers=self.kafka_servers,
    max_request_size=10485760, # 10M 联系大数据运维修改配置
    buffer_memory=10485760, # 10M
    compression_type='gzip'
)

2、大数据入hive消费者

设定最大20M

image.png