如何在pyspark上安装LZO和BROTLI等各种压缩编解码器?

gjmwrych  于 2023-05-28  发布在  Spark
关注(0)|答案(2)|浏览(178)

为了编写一个 parquet 文件并使用LZO编解码器压缩它,我编写了以下代码-

df.coalesce(1).write.option("compression","lzo").option("header","true").parquet("PARQUET.parquet")

但是,我得到了这个错误-

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.io.compress.lzo.LzoCodec

根据spark documentation,brotli需要安装BrotliCodec。但是没有给出安装它的步骤。在使用Brotli编解码器进行压缩时也会出现相同的错误。
如何安装/添加在PySpark上运行它所需的编解码器?

EDIT- LZO压缩适用于ORC,但不适用于Parquet

1yjd4xko

1yjd4xko1#

在lzo中写作,你需要以下步骤:

  • sudo apt-get install -y lzop
  • 将jar添加到pyspark jar(根据您的pyspark env更改路径):wget https://maven.twttr.com/com/hadoop/gplcompression/hadoop-lzo/0.4.20/hadoop-lzo-0.4.20.jar -P /usr/local/lib/python3.7/dist-packages/pyspark/jars/
  • 在SparkSession中设置此配置选项,("spark.sql.parquet.compression.codec", "lzo")

现在,您应该能够使用带有lzo压缩的parquet进行编写。

wz3gfoph

wz3gfoph2#

将jar文件复制到<python environment name>/lib/python3.9/site-packages/pyspark/jars

相关问题