You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PySpark中安装LZO、Brotli等压缩编解码器解决调用报错问题

报错根因

你遇到的类找不到异常是因为Spark读写Parquet时的压缩编解码器加载逻辑与ORC不同:ORC格式直接复用Hadoop全局注册的编解码器,而Parquet格式需要单独引入对应编解码器的依赖包,且在Spark配置中显式注册才可以调用,所以会出现LZO在ORC下可用、Parquet下报错的情况。

LZO编解码器配置步骤
  • 首先下载和你集群Hadoop版本匹配的hadoop-lzo.jar包,单节点环境放到$SPARK_HOME/jars/目录即可,集群环境需要同步放到所有Master、Worker节点的Spark jars目录下。
  • 提交PySpark任务时添加对应配置参数,命令行提交示例:
    pyspark --jars /绝对路径/hadoop-lzo.jar --conf spark.io.compression.codecs=org.apache.hadoop.io.compress.LzoCodec,org.apache.spark.io.LZ4CompressionCodec,org.apache.spark.io.SnappyCompressionCodec
  • 代码中写入Parquet的逻辑不需要修改,保持option("compression","lzo")即可。
Brotli编解码器配置步骤
  • 下载匹配版本的parquet-brotli.jar和hadoop-brotli.jar两个依赖包,同样同步到所有节点的Spark jars目录下。
  • 提交任务时添加配置:
    pyspark --jars /绝对路径/parquet-brotli.jar,/绝对路径/hadoop-brotli.jar --conf spark.io.compression.codecs=org.apache.hadoop.io.compress.BrotliCodec,org.apache.spark.io.LZ4CompressionCodec,org.apache.spark.io.SnappyCompressionCodec
  • 写入时指定option("compression","brotli")即可。
配置验证

你可以在代码中先执行以下语句确认编解码器已注册成功:

print(spark.conf.get("spark.io.compression.codecs"))

如果输出的配置列表中包含你要使用的编解码器全类名,说明配置生效。

内容的提问来源于stack exchange,提问作者Techie Baba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:45:03