Отсутствует значение тега InfluxDB (процессор nifi putInfluxDB) - PullRequest
3 голосов
/ 03 июня 2019

Я новичок в InfluxDB, проблема заключается в том, что мне нужно вставить Python dicts в InfluxDB через Nifi, и я пробовал разные способы, и я всегда получал ту же ошибку, сообщая, что тег отсутствует:

enter image description here

org.influxdb.InfluxDBException: {
    "error": "unable to parse '[
        {
          "measurement": "sensor",
          "time": 1559560006,
          "tags": [
            "sensor",
            "id",
            "date",
            "info",
            "aleatory_number",
            "aleatory_number_square_root"
          ],
          "fields": {
            "id": 8,
            "date": 1559559961002,
            "info": "info sensor8",
            "aleatory_number": 1778687859,
            "aleatory_number_square_root": 42174.492
          }
        }
      ]': missing tag value"
} 

Другой пример:

{
  "error":"unable to parse 
  '[{
    "measurement":"sensor",
    "time":1559630455,
    "tags":{"test_tag":"test"},
    "fields":{}
    }]'
    : missing tag value"
}
* * 1011 Другой: * * 1012
org.influxdb.InfluxDBException: 
{
  "error":"unable to parse 
  '[{
    "measurement":"sensor",
    "time":1559631341,
    "tags":{},
    "fields":{}
    }]'
    : missing tag value"}

Моя последняя попытка выполняется по схеме avro:

{
  "type": "record",
  "name": "preprocessed_value",
  "fields": [
    { "name": "measurement", "type": "string"  },
    { "name": "time", "type": "long"  },
    { "name": "tags", "type": { "type":"map", "values" : "string"}  },
    { 
      "name" : "fields" , 
      "type" : {
        "name" : "PythonDict",
        "type" : "record",
        "fields": [
          { "name": "id",                           "type": "int" },
          { "name": "date",                         "type": "long"  },
          { "name": "info",                         "type": "string"  },
          { "name": "aleatory_number",              "type": "long"  },
          { "name": "aleatory_number_square_root",  "type": "float" }
        ]
      } 
    }
  ]
}

И я получил ту же ошибку, используя теги и поля одновременно:

org.influxdb.InfluxDBException: {"error":"unable to parse 
  '[{
    "measurement":"sensor",
    "time":1559720142,
    "tags":{"test_tag":"test"},
    "fields":{
      "id":3,
      "date":1559718332366,
      "info":"info sensor3",
      "aleatory_number":141969819,
      "aleatory_number_square_root":11915.108
      }
  }]': missing tag value"}

Ответы [ 2 ]

1 голос
/ 04 июня 2019

В вашем первом примере ни один из ваших тегов не имеет значений.Во втором примере вы пишете точку, в которой нет полей;что недопустимо.

Ваша точка должна выглядеть следующим образом:

{
    "measurement":"sensor",
    "time":1559630455,
    "tags":{"test_tag":"test"},
    "fields":{"some_field": 1}
}
1 голос
/ 04 июня 2019

Если запись (точка согласно терминологии InfluxDB), которую вы пытаетесь вставить в измерение «датчик», не имеет значения или имеет нулевое значение для каких-либо тегов, вы получите эту ошибку.

Я не уверен, почему у вас есть почти похожие теги и поля для вашего измерения.Для точки столбцы тегов являются обязательными данными, а столбцы полей - необязательными.

Выполните следующую команду для притока cli:

show tag keys from sensor;

Это выведет список всех помеченных столбцов из вашего измерения.Убедитесь, что вы пропускаете все это, пытаясь вставить новую точку.

...