inconsistent behaviour in GenericCsvInputFormat

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

inconsistent behaviour in GenericCsvInputFormat

JAVIER RODRIGUEZ BENITO

Hi,

 

I think there is a inconsistent behaviour in parseRecord function of GenericCsvInputFormat, but I would like anybody confirm it.

When using readCsvFile and mapping to pojo objects with fields typed as String, the  result of the parsing is diferent depending on the field position when having empty values

 

In case any field but the last, has empty values, the parseRecord function returns true. In case the last field has an empty value, in the for loop the startPos and limit are equal, and function returns false if lenient is tru or throws an exception.

 

Example

Having a pojo with 3 attributes of type String and trying to parse the following records

 

String|String|String -> OK

||String -> OK

String|String| ->NOK

 

First two are correct but the last throws the ParseException in line 365

 

I think that or every null String makes to discard the records or the parsing should consider empty values at the end of the record.

What do you think?

 

Thanks

Regards




Este mensaje y sus adjuntos se dirigen exclusivamente a su destinatario, puede contener información privilegiada o confidencial y es para uso exclusivo de la persona o entidad de destino. Si no es usted. el destinatario indicado, queda notificado de que la lectura, utilización, divulgación y/o copia sin autorización puede estar prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.

The information contained in this transmission is privileged and confidential information intended only for the use of the individual or entity named above. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this transmission in error, do not read it. Please immediately reply to the sender that you have received this communication in error and then delete it.

Esta mensagem e seus anexos se dirigem exclusivamente ao seu destinatário, pode conter informação privilegiada ou confidencial e é para uso exclusivo da pessoa ou entidade de destino. Se não é vossa senhoria o destinatário indicado, fica notificado de que a leitura, utilização, divulgação e/ou cópia sem autorização pode estar proibida em virtude da legislação vigente. Se recebeu esta mensagem por erro, rogamos-lhe que nos o comunique imediatamente por esta mesma via e proceda a sua destruição
Reply | Threaded
Open this post in threaded view
|

Re: inconsistent behaviour in GenericCsvInputFormat

Kurt Young
Hi, what version of Flink did you use?

Best,
Kurt

On Fri, Apr 21, 2017 at 12:19 AM, JAVIER RODRIGUEZ BENITO <[hidden email]> wrote:

Hi,

 

I think there is a inconsistent behaviour in parseRecord function of GenericCsvInputFormat, but I would like anybody confirm it.

When using readCsvFile and mapping to pojo objects with fields typed as String, the  result of the parsing is diferent depending on the field position when having empty values

 

In case any field but the last, has empty values, the parseRecord function returns true. In case the last field has an empty value, in the for loop the startPos and limit are equal, and function returns false if lenient is tru or throws an exception.

 

Example

Having a pojo with 3 attributes of type String and trying to parse the following records

 

String|String|String -> OK

||String -> OK

String|String| ->NOK

 

First two are correct but the last throws the ParseException in line 365

 

I think that or every null String makes to discard the records or the parsing should consider empty values at the end of the record.

What do you think?

 

Thanks

Regards




Este mensaje y sus adjuntos se dirigen exclusivamente a su destinatario, puede contener información privilegiada o confidencial y es para uso exclusivo de la persona o entidad de destino. Si no es usted. el destinatario indicado, queda notificado de que la lectura, utilización, divulgación y/o copia sin autorización puede estar prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.

The information contained in this transmission is privileged and confidential information intended only for the use of the individual or entity named above. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this transmission in error, do not read it. Please immediately reply to the sender that you have received this communication in error and then delete it.

Esta mensagem e seus anexos se dirigem exclusivamente ao seu destinatário, pode conter informação privilegiada ou confidencial e é para uso exclusivo da pessoa ou entidade de destino. Se não é vossa senhoria o destinatário indicado, fica notificado de que a leitura, utilização, divulgação e/ou cópia sem autorização pode estar proibida em virtude da legislação vigente. Se recebeu esta mensagem por erro, rogamos-lhe que nos o comunique imediatamente por esta mesma via e proceda a sua destruição

Reply | Threaded
Open this post in threaded view
|

RE: inconsistent behaviour in GenericCsvInputFormat

JAVIER RODRIGUEZ BENITO

Hi Kurt,

 

I´m using versión 1.2.0.

 

Best,

Javi

 

 

De: Kurt Young [mailto:[hidden email]]
Enviado el: viernes, 21 de abril de 2017 2:56
Para: JAVIER RODRIGUEZ BENITO <[hidden email]>
CC: [hidden email]
Asunto: Re: inconsistent behaviour in GenericCsvInputFormat

 

Hi, what version of Flink did you use?


Best,

Kurt

 

On Fri, Apr 21, 2017 at 12:19 AM, JAVIER RODRIGUEZ BENITO <[hidden email]> wrote:

Hi,

 

I think there is a inconsistent behaviour in parseRecord function of GenericCsvInputFormat, but I would like anybody confirm it.

When using readCsvFile and mapping to pojo objects with fields typed as String, the  result of the parsing is diferent depending on the field position when having empty values

 

In case any field but the last, has empty values, the parseRecord function returns true. In case the last field has an empty value, in the for loop the startPos and limit are equal, and function returns false if lenient is tru or throws an exception.

 

Example

Having a pojo with 3 attributes of type String and trying to parse the following records

 

String|String|String -> OK

||String -> OK

String|String| ->NOK

 

First two are correct but the last throws the ParseException in line 365

 

I think that or every null String makes to discard the records or the parsing should consider empty values at the end of the record.

What do you think?

 

Thanks

Regards

 



Este mensaje y sus adjuntos se dirigen exclusivamente a su destinatario, puede contener información privilegiada o confidencial y es para uso exclusivo de la persona o entidad de destino. Si no es usted. el destinatario indicado, queda notificado de que la lectura, utilización, divulgación y/o copia sin autorización puede estar prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.

The information contained in this transmission is privileged and confidential information intended only for the use of the individual or entity named above. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this transmission in error, do not read it. Please immediately reply to the sender that you have received this communication in error and then delete it.

Esta mensagem e seus anexos se dirigem exclusivamente ao seu destinatário, pode conter informação privilegiada ou confidencial e é para uso exclusivo da pessoa ou entidade de destino. Se não é vossa senhoria o destinatário indicado, fica notificado de que a leitura, utilização, divulgação e/ou cópia sem autorização pode estar proibida em virtude da legislação vigente. Se recebeu esta mensagem por erro, rogamos-lhe que nos o comunique imediatamente por esta mesma via e proceda a sua destruição

 




Este mensaje y sus adjuntos se dirigen exclusivamente a su destinatario, puede contener información privilegiada o confidencial y es para uso exclusivo de la persona o entidad de destino. Si no es usted. el destinatario indicado, queda notificado de que la lectura, utilización, divulgación y/o copia sin autorización puede estar prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.

The information contained in this transmission is privileged and confidential information intended only for the use of the individual or entity named above. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this transmission in error, do not read it. Please immediately reply to the sender that you have received this communication in error and then delete it.

Esta mensagem e seus anexos se dirigem exclusivamente ao seu destinatário, pode conter informação privilegiada ou confidencial e é para uso exclusivo da pessoa ou entidade de destino. Se não é vossa senhoria o destinatário indicado, fica notificado de que a leitura, utilização, divulgação e/ou cópia sem autorização pode estar proibida em virtude da legislação vigente. Se recebeu esta mensagem por erro, rogamos-lhe que nos o comunique imediatamente por esta mesma via e proceda a sua destruição