Flink ReadCsvFile ParserError NUMERIC_VALUE_ILLEGAL_CHARACTER

时间:2018-02-05 11:35:20

标签: scala csv apache-flink

我正在尝试使用readCsvFile function将Iris DataSet读入flink并继续ParserError NUMERIC_VALUE_ILLEGAL_CHARACTER

csv(隐藏的字符可见)就像这样

enter image description here

我试图删除文件中项目之间的空格,但没有运气。有多个项目无法读取,这是错误输出:

org.apache.flink.api.common.io.ParseException: Line could not be parsed: '5.4, 3.0, 4.5, 1.5, 2'
ParserError NUMERIC_VALUE_ILLEGAL_CHARACTER 
Expect field types: class java.lang.Long, class java.lang.Long, class java.lang.Long, class java.lang.Long, class java.lang.Integer 
in file: /home/hkr/Documents/Estudios/Máster/TFM/Desarrollo/DPASF/dpasf/target/scala-2.11/test-classes/iris.dat
[...]
org.apache.flink.api.common.io.ParseException: Line could not be parsed: '4.5, 2.3, 1.3, 0.3, 1'
ParserError NUMERIC_VALUE_ILLEGAL_CHARACTER
[...]

但是当我检查那些行时,我发现没有奇怪的角色,只有下面的图片中的那些。

enter image description here

我尝试过不同的事情:

// Iris POJO
case class Iris(SepalLength:Long,
  SepalWidth:Long,
  PetalLength:Long,
  PetalWidth:Long,
  Class:Int)

val env = ExecutionEnvironment.getExecutionEnvironment
val dataSet = env.readCsvFile[Iris](getClass.getResource("/iris.dat").getPath, "\n", ",")

此不同的组合,例如将Class attr更改为Long,或使用Tuple5,以及使用readCsvFile和默认值args:

val dataSet = env.readCsvFile[(Long, Long, Long, Long, Long)](getClass.getResource("/iris.dat").getPath)
val dataSet = env.readCsvFile[(Long, Long, Long, Long, Int)](getClass.getResource("/iris.dat").getPath)

有人知道可能发生了什么吗?我不知道在哪里看。

2 个答案:

答案 0 :(得分:1)

出于某种原因,在再次用新行替换所有行,然后从数据集中删除所有空格后,它似乎现在正在工作。

答案 1 :(得分:1)

删除定界符前后的空白可以帮助解决此问题。