I try to use real-time example which you provided in the metatron blog.
import sys
import json
import math
from datetime import datetime
from time import sleep
from kafka import KafkaProducer
#producer = KafkaProducer(bootstrap_servers='localhost:9092')
producer = KafkaProducer(value_serializer=lambda v: json.dumps(v).encode('utf-8'))
list_category = ['10', '20', '30'];
for i in range(0, 100000) :
for cur_cate in list_category :
cur_result = {};
cur_result['category'] = cur_cate;
cur_result['value_01'] = int(math.sin(i/float(cur_cate))*100)*1;
cur_result['value_02'] = int(math.sin(i/float(cur_cate))*100)*2;
cur_result['value_03'] = int(math.sin(i/float(cur_cate))*100)*3;
cur_result['timestamp'] = datetime.strftime(datetime.utcnow(), "%Y-%m-%dT%H%M:%SZ");
print(json.dumps(cur_result) );
producer.send('realtime_sample', cur_result );
sys.stdout.flush();
producer.flush();
sleep(1)
Json insomnia
{
"name": "metatron_realtime_sample_02",
"description": null,
"dsType": "MASTER",
"connType": "ENGINE",
"srcType": "REALTIME",
"granularity": "SECOND",
"segGranularity": "DAY",
"ingestion": {
"type": "realtime",
"topic": "realtime_sample",
"consumerType": "KAFKA",
"consumerProperties": {
"bootstrap.servers": "localhost:9092"
},
"format": {
"type": "json"
},
"rollup": true
},
"fields":[
{
"name": "timestamp",
"alias": "timestamp",
"type": "TIMESTAMP",
"logicalType": "TIMESTAMP",
"role": "TIMESTAMP",
"format": "yyyy-MM0ddTHH:mm:ssZ",
"seq": 0
},
{
"name": "category",
"alias": "category",
"type": "STRING",
"logicalType": "STRING",
"role": "DIMENSION",
"seq": 1
},
{
"name": "value_01",
"alias": "value_01",
"type": "DOUBLE",
"logicalType": "DOUBLE",
"role": "MEASURE",
"seq": 2
},
{
"name": "value_02",
"alias": "value_02",
"type": "DOUBLE",
"logicalType": "DOUBLE",
"role": "MEASURE",
"seq": 3
},
{
"name": "value_03",
"alias": "value_03",
"type": "DOUBLE",
"logicalType": "DOUBLE",
"role": "MEASURE",
"seq": 4
}
]
}
Preview message in the insomnia
{
"timestamp": "2019-04-25T15:33:27.952+0900",
"status": 500,
"error": "Internal Server Error",
"exception": "javax.validation.ConstraintViolationException",
"message": "Validation failed for classes [app.metatron.discovery.domain.datasource.Field] during persist time for groups [javax.validation.groups.Default, ]\nList of constraint violations:[\n\tConstraintViolationImpl{interpolatedMessage='Invalid configuration spec.', propertyPath=format, rootBeanClass=class app.metatron.discovery.domain.datasource.Field, messageTemplate='Invalid configuration spec.'}\n]",
"path": "/api/datasources"
}
Is there something wrong in my code?
Many thanks,