通过 spark.read.csv读取CSV文件时,遇到 到 ArrayIndexOutOfBoundsException报错,初步判断是缺少参数导致,放百度看看,没找引起问题相关的参数。
第一个看到的可能是null值导致,以前的字段也有空值,但无此问题啊。
另有说是paranamer包太旧与JDK1.8有问题,升级到最新版本可以解决,操作后,发现问题依旧。
再次放百度,没找到相关的,其中有一个说是内部表与外部表关联时,如果外部表的字段不一样,会有这个报错。那么会不会是文件的问题呢?
删除文件,只保留几行,并且都是非Null,重跑可以正常显示,明显是文件的问题。
再加多几条记录,带有null,重跑,还是正常,说明不是null值导致的。
不停加记录然后重跑,最后定位到有问题的那条记录,文件格式没问题,那为什么会报错呢?
这个文件因为是csv,为了方便可以直接使用excel打开,我设置存储编码为gbk,会不会是编码问题?
修改为UTF-8,重跑,问题解决。