现象

spark报错 : java.lang.IndexOutOfBoundsException 或者 java.lang.NullPointerException

产生原因

分区或者表下存在空的orc文件。该BUG在Spark2.3.0之后才修复

解决方案

规避解决。修改ORC的默认分割策略为:hive.exec.orc.split.strategy=BI进行解决。Orc的分split有3种策略(ETL、BI、HYBIRD),默认是HYBIRD(混合模式,根据文件大小和文件个数自动选择ETL还是BI模式),BI模式是按照文件个数来分split