利用spark读取parquet表时,有时会出现以下异常:
java.lang.UnsupportedOperationException: Unsupported encoding: DELTA_BYTE_ARRAY
原因:源表的parquet文件采用ParquetWriterV2写入的,DELTA_BYTE_ARRAY encoding是Parquet V2的新特色,与V1不完全兼容。
解决方法:
将spark.sql.hive.convertMetastoreParquet参数设置为false,该参数默认为true,此时sparksql采用自带的Parquet SerDe,该序列化机制具有更好的性能。设为false时,采用Hive的SerDe(序列化/反序列化)。