We provide two solutions. The first one reads its input by providing a Google Protobuf server.
Solution with Protobuf
To use this solution, the following features need to be installed:
The source definition is done with a Receive operator. This means, the source sends its information to Odysseus.
Further information for the Protobuf Server is given with the options:
OPTIONS=[ ['type','debs.challenge.msg.CDataPoint'], ['port','9999'], ['BaseTimeUnit','NANOSECONDS']],
The type is the compiled version of the protobuf specification file given by the DEBS organisators. Is must be provided inside a special bundle.
Port if the port on which der Server is started on the machine where the query is executed. In a monolithic version this would be on localhost, in a server version this would be on the Odysseus server.
Odysseus can read the timestamps from the input schema. If no further information is given, the unit of the timestamp is assumed to be milliseconds. With BaseTimeUnit the real time unit can be set.
Finally, the schema definition represents the internal format of the data inside of Odysseus, i.e. there are tuples with the given schema.
Because the data is given as csv file, the external server can be omitted and allows for some tests an easier processing. Here we simpy use the CSV protocol handler and read the input from file.
In this case, the csv file is found in the workspace folder.
- The input file does not contains long values for the time stamp but a String date format. The format of the input string is given with the option:dateformat.
- The input file contains some time stamps out of order. So the TimestampOrderValidate Operator is used to suppress these values.