SparkSQL 与 Parquet格式兼容性
spark.sql.parquet.binaryAsString 默认值是false。
一些parquet生产系统,尤其是impala、hive和老版本的spark sql,不区分binary和string类型。
该参数告诉spark 将binary数据当作字符串处理。
spark.sql.parquet.int96AsTimestamp 默认是true。
有些parquet生产系统,尤其是parquet和hive,将timestamp翻译成INT96.该参数会提示Spark SQL讲INT96翻译成timestamp。
在impala、hive中,Timestamp被存储为INT96。该字段告诉spark在遇到INT96时,自动解析成Timestamp。
spark.sql.parquet.compression.codec 默认是snappy。
当写parquet文件的时候设置压缩格式。
如果在option或者properties里配置了compression或者parquet.compression
优先级依次是:compression,parquet.compression,spark.sql.parquet.compression.codec。
支持的配置类型有:none,uncompressed,snappy,gzip,lzo,brotli,lz4,zstd。
在hadoop2.9.0之前,zstd需要安装ZstandardCodec,brotli需要安装BrotliCodec。
spark.sql.parquet.filterPushdown 默认是true。
设置为true代表开启parquet下推执行优化。
spark.sql.hive.convertMetastoreParquet 默认是true。
假如设置为false,spark sql会读取hive parquet表的时候使用Hive SerDe,替代内置的。
当设置为false,则会使用Hive SerDe来解析parquet。
spark.sql.parquet.mergeSchema 默认是false。
当设置为true的时候,parquet数据源会合并读取所有的parquet文件的schema,
否则会从summary文件或者假如没有summary文件的话随机的选一些数据文件来合并schema。
spark.sql.parquet.writeLegacyFormat 默认是false。
如果设置为true 数据会以spark 1.4和更早的版本的格式写入。 比如,decimal类型的值会被以apache parquet的fixed-length byte array格式写出,该格式是其他系统例如hive,impala等使用的。
如果是false,会使用parquet的新版格式。例如,decimals会以int-based格式写出。
如果spark sql要以parquet输出并且结果会被不支持新格式的其他系统使用的话,需要设置为true。

浙公网安备 33010602011771号