我有以 delflate.gz
格式压缩的源文件 . 在将数据加载到Spark数据框架时,它失败并出现 ArrayOutofBound
异常 .
val cf = spark.read.option("header", "false").option("delimiter", "\u0001").option("codec", "deflate").csv("path/xxx.deflate.gz")
cf.show()
错误:
org.apache.spark.SparkException:作业因阶段失败而中止:阶段15.0中的任务0失败4次,最近失败:阶段15.0中丢失任务0.3(TID 871,10.180.255.33, Actuator 0):java.lang .ArrayIndexOutOfBoundsException:63
1 回答
假设通过deflate gzip文件你的意思是一个普通的gzip文件(因为gzip基于DEFLATE算法),你的问题可能在于CSV文件的格式化 . 您可能在每行上具有不一致的字段(列)数量,并且可能需要更改读取模式以使其允许 .
但是,如果您有一些特殊的雪花Gzip文件并且文件扩展名保持这种方式(不推荐),您可以通过读取二进制文件并手动解压缩来做一些艰难的事情 .
sc.binaryFiles
函数是主要尝试的函数 .相关SO:Zip support in Apache Spark