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。

 

posted @ 2020-12-07 10:53  茗::流  阅读(1422)  评论(0)    收藏  举报
如有雷同,纯属参考。如有侵犯你的版权,请联系我。