i都使用flink将CSV文件加载到Pojos的数据集,该文件通过Scala Case类定义,使用ReadCSVfile方法定义,我遇到了一个无法解决的问题。
当在CSV中有一个格式错误的记录时,其任何字段都被丢弃了,我认为保留这些记录的唯一方法是将它们全部键入字符串并自己进行验证。
问题在于,如果定界符之后的最后一个字段为空,则默认情况下将记录丢弃,我认为是因为它被认为没有预期的字段数,并且不可能处理此记录错误,而如果空值如果在以前的任何一个字段中,则没有问题。
示例
field1 | field2 | field3
A || C
A | B |
在此示例中,第一个记录是由readcsvfile方法返回的,而不是第二个记录。
这个行为对吗?而且有任何走动来获取记录吗?
谢谢
flink中的案例类和元组不支持零值。因此,如果空字段不是字符串,则a||c
无效。在这种情况下,我建议使用RowCsvInputFormat
。它支持nulls和通用行可以在以下地图操作员中转换为任何其他类。
问题是,正如您所说,如果字段是字符串,即使记录为null,则该记录是有效的,而当null值在内时,这也不会发生最后一个字段。根据位置而不同的行为。
您也将尝试使用RowCsvinputformat尝试。谢谢