读取csv时带有flink的NUMERIC_VALUE_ILLEGAL_CHARACTER

时间:2018-05-28 06:29:16

标签: apache-flink

我正在使用

在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)

当我尝试只读取具有所有非空值的单个时,程序成功。任何人都可以帮助如何解决该异常。

1 个答案:

答案 0 :(得分:0)

错误消息显示

  

数值非法字符

这意味着其中一个数字(整数)字段包含非法字符,即整数解析器不知道如何处理的字符。 因此,问题在于您正在阅读的数据。我会尝试识别冲突的行和字段。