为了编写一个 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
2条答案
按热度按时间1yjd4xko1#
在lzo中写作,你需要以下步骤:
sudo apt-get install -y lzop
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/
("spark.sql.parquet.compression.codec", "lzo")
现在,您应该能够使用带有
lzo
压缩的parquet进行编写。wz3gfoph2#
将jar文件复制到
<python environment name>/lib/python3.9/site-packages/pyspark/jars