背景:
1)需要将yarn queue user的资源使用展示出来
2)数据已经存储在mysql里,需要过滤后插入到influxdb
3)由于历史数据比较多,用户的CPU、内存的数据分别有200万
分析:
1)查询mysql中m_bizhadoop_yarn_queue_userinfo的表中查询出用户的useMemory、useCpu
2)然后用influx cli逐条读取,插入到influxdb
操作:
1)查询mysql,sql如下
select id,username,sum(useMemory),sum(useCpu),ts from m_bizhadoop_yarn_queue_userinfo where id>=2931485 group by ts,username ORDER BY id ASC;
2)然后插入到influxdb
${INFLUXCOMMAND} -host ${influxdbHost} -port ${influxdbHort} -username ${influxdbUser} -password ${influxdbPassword} -database ${influxdbDatabase} -execute "insert ${influxdbCpuTable},username=${username} value=${cpu} {time}"
但是这种通过influx cli插入效率特别低,每秒只能插入一条
3)调整influx 插入方式,批量插入
想到的是用influx http api接口,格式如下
cur