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

·  阅读 97

在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

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改