当前位置: 首页 > 知识库问答 >
问题:

将大量数据写入 TD 引擎时出现问题

司寇经亘
2023-03-14

我正在尝试将我的应用程序移植到TDEngine,该应用程序通过其无模式接口将ImpxDb数据写入TDEngine。我认为这应该很容易,但实际上并不容易。

爪哇代码如下:

public void batchInsert() {
JSONObject json = new JSONObject();
json.put("f0", "tt");
json.put("f1", "aa");
json.put("f2", "tt");
json.put("f3", "aa");
json.put("f4", "tt");
json.put("f5", "aa");
json.put("f6", "tt");
json.put("f7", "aa");

BatchPoints batchPoints = BatchPoints.database(database)
    .precision(TimeUnit.MILLISECONDS)
    .build();
for (int i = 0; i < 1; i++) {
  Point point = Point.measurement(measurement)
      .time(System.currentTimeMillis() - 3600000, TimeUnit.MILLISECONDS)
      .addField("current", 10.2)
      .addField("voltage", 219 + i)
      .addField("phase", 0.32 + i)
      .addField("strAtri", "123456781234567812345678")
      .addField("json$j", json.toJSONString())
      .tag("__deviceId__", "sensor" + i)
      .build();
  try {
    Thread.sleep(10);
  } catch (InterruptedException e) {
    e.printStackTrace();
  }
  batchPoints.point(point);
}
try {
  JSONObject responseBody;

  String sql = "CREATE DATABASE IF NOT EXISTS " + database
      + " REPLICA 1 QUORUM 1 DAYS 1 KEEP 365 UPDATE 2;";
  HttpHeaders header = new HttpHeaders();
  header.setContentType(MediaType.APPLICATION_JSON);
  header.set("Authorization", getBasicAuth("root", "taosdata"));
  HttpEntity<String> httpEntity = new HttpEntity<>(sql, header);
  responseBody = restTemplate.postForObject(tdengineUrl, httpEntity, JSONObject.class);
  System.out.println("database=" + responseBody.get("status"));

  System.out.println(batchPoints.lineProtocol());
  ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(tdengineInfluxdbUrl, batchPoints.lineProtocol(), JSONObject.class);
  if (responseEntity.getStatusCodeValue() == 204) {
    System.out.println(responseEntity.getStatusCodeValue());
  }
} catch (Exception e) {
  e.printStackTrace();
}

我在控制台上得到了结果:

传感器,设备 Id=传感器0 电流=10.2,json$j=“{”f6“:”tt“,”f7“:”aa“,”f0“:”tt“,”f1“:”aa“,”f2“:”tt“,”f3“:”aa“,”f4“:”tt“,”f5“:”aa“}”,相位=0.32,strAtri=“123456781234567812345678”,电压=219i 1647569782596

我不知道为什么,如果有人能告诉我如何解决它,我会很感激。

谢谢

共有1个答案

阎昌勋
2023-03-14

对于json文本,应在双引号和逗号之前使用转义字符,例如“ste,t1=35 json_test=L”{“carNumber”:“”,“image”:“,”outParkingSpace“:1638927251000,“parkingSpaceStatus”:0}“1645329601000”

 类似资料:
  • 问题内容: 我正在向stdin写入大量数据。 我如何确保它不会阻塞? 我读了一个大字符串并将其写入后,似乎无法解决。 我有大量的文件集,这些文件将被顺序写入stdin(> 1k个文件) 所以发生的事情是我正在运行一个循环 它以某种方式挂在文件号上。400.该文件是带有长字符串的大文件。 我确实怀疑这是一个阻碍性问题。 仅当我从0迭代到1000时才会发生这种情况。但是,如果我要从文件400开始,则不

  • 问题内容: 我正在尝试使用PrintStream在Java文件中写入0xFF。当我使用十六进制编辑器打开其他值时,会将其他值正确写入文件,但是假定显示0xFF的值却改为0xC3BF。 使用的变量类型为int。经过几次尝试后,我还发现我可以输入的“最大值”值为0x7F,这将在十六进制编辑器中正确显示,如果我输入0x80,则十六进制编辑器将显示0xC280。 怎么了? 问题答案: 进行一些调查后发现,

  • 我有一个很大的数据框,我正在HDFS中写入拼花文件。从日志中获取以下异常: 谷歌对此进行了搜索,但找不到任何具体的解决方案。将推测设置为false:conf.Set(“spark.投机”,“false”) 但仍然没有帮助。它只完成了几个任务,生成了几个零件文件,然后突然因此错误而停止。 详细信息:Spark版本:2.3.1(这在1.6x中没有发生) 只有一个会话正在运行,这排除了不同会话访问同一位

  • 主要内容:1.开源OLAP综述,2.开源数仓解决方案1.开源OLAP综述 如今的开源数据引擎多种多样,不同种类的引擎满足了我们不同的需求。现在ROLAP计算存储一体的数据仓库主要有三种,即StarRocks(DorisDB),ClickHouse和Apache Doris。应用最广的数据查询系统主要有Druid,Kylin和HBase。MPP引擎主要有Trino,PrestoDB和Impala。这些引擎在行业内有着广泛的应用。 在云资源层,主要有E

  • 我正在尝试使用Databricks的spark-csv2.10依赖关系将一个数据帧写入到HDFS的*.csv文件。依赖关系似乎可以正常工作,因为我可以将.csv文件读入数据帧。但是当我执行写操作时,我会得到以下错误。将头写入文件后会出现异常。 当我将查询更改为时,write工作很好。 有谁能帮我一下吗? 编辑:根据Chandan的请求,这里是的结果