当前位置: 首页 > news >正文

InfluxDB写入测试

     早几年测试时序库时,采集数据到kafka,然后用不同数据进行存储验证。Influxdb是花时间比较多的,它的数据建模方法、读写方法都需要使用特殊的API。时间久了自己也经常忘记,把当时的测试关键代码记录下来,也方便日后查找。

     代码基于java编写。

    1、接口数据定义,clientid+tag组合必须唯一

public class KafkaInfo{
        //客户端id
        public String clientid;

        //测点名称
        public String tag ;

        //数据时戳
        public String ts ;

        //测点数据类型
        public String vt;

        //测点值
        public String value;

        //本次数据更新次数
        public long updatacount;

        //测点说明
        public String desc;
}

2、数据写入

    static Logger logger = Logger.getLogger(influxdbApplicationTest.class);

    // You can generate a Token from the "Tokens Tab" in the UI
    static String token = "web界面创建的token";
    static String bucket = "数据分库名";
    static String org = "初始化时创建的org";

    public static void main(String[] args) {
        logger.info("-------start ,ApplicationTest--------");

        InfluxDBClient client = InfluxDBClientFactory.create("http://10.126.12.113:8086", token.toCharArray());

        //
        // Write data
        //
        try (WriteApi writeApi = client.getWriteApi()) {

            //
            // Write by Data Point
            //
            for ( int i = 0;i < 10; i ++ ) {
                Point point = Point.measurement("Line123")
                        .addTag("tag", "Tags001")
                        .addTag("L1", "real")
                        .addField("value", 20*i)
                        .addField("update", 7000+i)
                        .time(Instant.now().toEpochMilli(), WritePrecision.MS);

                //writeApi.writePoint(bucket, org, point);
            }

        }

        //
        // Query data
        //
        String query = String.format("from(bucket: \"%s\") |> range(start: -1h) |> filter(fn: (r) =>r._measurement==\"Line123\"", bucket);

        QueryApi queryApi = client.getQueryApi();

        List<FluxTable> tables = queryApi.query(query,org);
        for (FluxTable fluxTable : tables) {
            List<FluxRecord> records = fluxTable.getRecords();
            for (FluxRecord fluxRecord : records) {
                System.out.println(fluxRecord.getTime() + ": " + fluxRecord.getMeasurement()+","+ fluxRecord.getValueByKey("tag") +","+ fluxRecord.getValueByKey("_value"));
            }
        }

        client.close();

        logger.info("-------finish ,ApplicationTest--------");

    }

相关文章:

  • 贪心算法——c#
  • Ubuntu24.04下管理自己的ssh连接
  • 关于ISP Pipeline LSC(镜头阴影校正)位置的一些想法
  • Java 大视界 -- 基于 Java 的大数据实时流处理中的窗口操作与时间语义详解(135)
  • Elastic Stack 8.16.0 日志收集平台的搭建
  • Java 中的序列化和反序列化是什么?
  • IntelliJ IDEA 快捷键系列:重命名快捷键详解
  • Tailwindcss开启黑夜模式
  • 数据结构-----初始数据结构、及GDB调试
  • python爬虫Scrapy(6)之增量式
  • 2018年全国职业院校技能大赛高职组-计算机网络应用竞赛竞赛样题E卷
  • OpenGL
  • AIDD-人工智能药物设计-Nat. Comput. Sci. | 利用机器学习引导的对接筛选,实现快速遍历广阔化学空间
  • 商品详情页
  • Spring AI整合DeepSeek、Ollama本地大模型
  • 队列+宽度优先搜索,力扣.662.二叉树最大高度 力扣515.在每个数行中找最大值力扣703.数据流中第k大元素力扣692.前k个高频词
  • Python的types库学习记录
  • todolist docker 小工具
  • 【零基础入门unity游戏开发——进阶篇】unity中配合VideoClip和VideoPlayer组件实现视频播放
  • 给单片机生成字库的方案
  • 网站建设报价单/常见的网络推广方法有哪些
  • 万网的网站代码怎么看/seo诊断优化方案