我正在使用
在flink作业中读取csv文件env.readCsvFile(input).ignoreFirstLine().pojoType(MyPojo.class,getFields());
csv文件由30个字段组成,其中一些字段可能为空。
对于上面的代码,我不断得到例外:
ParserError NUMERIC_VALUE_ILLEGAL_CHARACTER
Expect field types: class java.lang.String, class java.lang.String, class
java.lang.String, class java.lang.String, class java.lang.String, class
java.lang.String, class java.lang.String, class java.lang.String, class
java.lang.String, class java.lang.String, class java.lang.String, class
java.lang.String, class java.lang.Integer, class java.lang.String, class
java.lang.String, class java.lang.String, class java.lang.String, class
java.lang.String, class java.lang.String, class java.lang.String, class
java.lang.String, class java.lang.String, class java.lang.String, class
java.lang.String, class java.lang.String, class java.lang.Integer, class
java.lang.String, class java.lang.String, class java.lang.String, class
java.lang.String
in file: C:/tmp/sample
at org.apache.flink.api.common.io.GenericCsvInputFormat.parseRecord(GenericCsvInputFormat.java:386)
at org.apache.flink.api.java.io.CsvInputFormat.readRecord(CsvInputFormat.java:115)
at org.apache.flink.api.common.io.DelimitedInputFormat.nextRecord(DelimitedInputFormat.java:527)
at org.apache.flink.api.java.io.CsvInputFormat.nextRecord(CsvInputFormat.java:83)
at org.apache.flink.runtime.operators.DataSourceTask.invoke(DataSourceTask.java:167)
at org.apache.flink.runtime.taskmanager.Task.run(Task.java:718)
at java.lang.Thread.run(Thread.java:748)
当我尝试只读取具有所有非空值的单个时,程序成功。任何人都可以帮助如何解决该异常。
答案 0 :(得分:0)
错误消息显示
数值非法字符
这意味着其中一个数字(整数)字段包含非法字符,即整数解析器不知道如何处理的字符。 因此,问题在于您正在阅读的数据。我会尝试识别冲突的行和字段。