telefonicaid / fiware-cygnus

A connector in charge of persisting context data sources into other third-party databases and storage systems, creating a historical view of the context
https://fiware-cygnus.rtfd.io/
GNU Affero General Public License v3.0
65 stars 105 forks source link

HDFS persistence in csv format #1475

Open manucarrace opened 6 years ago

manucarrace commented 6 years ago

The metadata insertion in csv need to be improved. Current cygnus implementation inserts metadata in different files, and it includes a reference to the metadata path in the csv file. This metadata files has no order and it is not possible to identify which metadata corresponds to which attribute. Moreover, the csv file has very large fields, which makes the csv a bit difficult to read. Besides, the client folder is full of empty metadatada folders, which, in general terms, are rubbish.

The following is an example of a cvs persistence:

2018-04-23T11:54:38.936Z,/MedioAmbiente,1,EstacionClimaDatos,78.0,hdfs:///user/hdfs/sc_vlci/MedioAmbiente/1_EstacionClimaDatosxffffHRxffffdouble/1_EstacionClimaDatosxffffHRxffffdouble.txt,1,hdfs:///user/hdfs/sc_vlci/MedioAmbiente/1_EstacionClimaDatosxffffIdDispositivoxffffinteger/1_EstacionClimaDatosxffffIdDispositivoxffffinteger.txt,0.0,hdfs:///user/hdfs/sc_vlci/MedioAmbiente/1_EstacionClimaDatosxffffPrecipitacionesxffffdouble/1_EstacionClimaDatosxffffPrecipitacionesxffffdouble.txt,1031.0,hdfs:///user/hdfs/sc_vlci/MedioAmbiente/1_EstacionClimaDatosxffffPresionBarxffffdouble/1_EstacionClimaDatosxffffPresionBarxffffdouble.txt,9.4,hdfs:///user/hdfs/sc_vlci/MedioAmbiente/1_EstacionClimaDatosxffffTemperaturaxffffdouble/1_EstacionClimaDatosxffffTemperaturaxffffdouble.txt,2017-12-20T10:16:27.00Z,hdfs:///user/hdfs/sc_vlci/MedioAmbiente/1_EstacionClimaDatosxffffTimeInstantxffffISO8601/1_EstacionClimaDatosxffffTimeInstantxffffISO8601.txt,236.0,hdfs:///user/hdfs/sc_vlci/MedioAmbiente/1_EstacionClimaDatosxffffVientoDireccionxffffdouble/1_EstacionClimaDatosxffffVientoDireccionxffffdouble.txt,0.3,hdfs:///user/hdfs/sc_vlci/MedioAmbiente/1_EstacionClimaDatosxffffVientoVelocidadxffffdouble/1_EstacionClimaDatosxffffVientoVelocidadxffffdouble.txt,wewew,hdfs:///user/hdfs/sc_vlci/MedioAmbiente/1_EstacionClimaDatosxffffcacaxffffwewye/1_EstacionClimaDatosxffffcacaxffffwewye.txt,39.457526, -0.342666,hdfs:///user/hdfs/sc_vlci/MedioAmbiente/1_EstacionClimaDatosxfffflocationxffffcoords/1_EstacionClimaDatosxfffflocationxffffcoords.txt,,hdfs:///user/hdfs/sc_vlci/MedioAmbiente/1_EstacionClimaDatosxffffqqqqxffffqqqqq/1_EstacionClimaDatosxffffqqqqxffffqqqqq.txt

Where:

2018-04-23T11:54:38.936Z – recvTime: obligatorio en cygnus. Es el tiempo de inserción en hdfs /MedioAmbiente – fiware-servicePath: obligatorio en cygnus 1 – entityId: obligatorio en cygnus EstacionClimaDatos - entityType: obligatorio en cygnus 78.0 - valor del primer atributo (en este caso HR) hdfs:///user/hdfs/sc_vlci/MedioAmbiente/1_EstacionClimaDatosxffffHRxffffdouble/1_EstacionClimaDatosxffffHRxffffdouble.txt: - ruta donde se almacenan los metadatos del primer atributo. Al poder ser una lista de metadatos de longitud variable se almacenan en una ruta. En vuestro caso este campo podríais ignorarlo 1 - valor del segundo atributo (en este caso IdDispositivo) hdfs:///user/hdfs/sc_vlci/MedioAmbiente/1_EstacionClimaDatosxffffIdDispositivoxffffinteger/1_EstacionClimaDatosxffffIdDispositivoxffffinteger.txt: - ruta de los metadatos del segundo atributo 0.0: - valor del tercer atributo (en este caso Precipitaciones) hdfs:///user/hdfs/sc_vlci/MedioAmbiente/1_EstacionClimaDatosxffffPrecipitacionesxffffdouble/1_EstacionClimaDatosxffffPrecipitacionesxffffdouble.txt: - ruta de los metadatos del tercer atributo

AlvaroVega commented 6 years ago

Metadata aggregation is done at: https://github.com/telefonicaid/fiware-cygnus/blob/master/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/sinks/NGSIHDFSSink.java#L499

It could be easy add a configuration flag to enable or not metadata aggregation

manucarrace commented 4 years ago

Same issue as #1591