Can’t import lzo files in pyspark
我有一个以 lzo 格式压缩的 csv 文件,我想将其导入 pyspark 数据帧。如果文件没有压缩,我会这样做:
1
2 3 4 |
import pyspark as ps
spark = ps.sql.SparkSession.builder.master(“local[2]”).getOrCreate() |
文件路径 fp 和模式 SCHEMA 在别处正确定义。但是,当使用 lzo 压缩文件时,这将返回一个填充有 null 值的数据帧。
我已经在我的机器上安装了 lzop,可以从终端解压缩文件,然后使用 pyspark 导入它。但是,由于硬盘空间和时间的限制,这不是一个可行的解决方案(我有大量的 lzo 文件)。
我花了很长时间,但我找到了解决方案。我从这个答案中获得灵感,并尝试手动重现 Maven 对 Java 所做的事情。
这些是要遵循的步骤:
在此文件夹中,创建一个包含以下文本的 core-site.xml 文件:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<configuration>
<property> <name>io.compression.codecs</name> <value> org.apache.hadoop.io.compress.DefaultCodec, com.hadoop.compression.lzo.LzoCodec, com.hadoop.compression.lzo.LzopCodec, org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.BZip2Codec </value> </property> <property> <name>io.compression.codec.lzo.class</name> <value>com.hadoop.compression.lzo.LzoCodec</value> </property> </configuration> |
现在问题中的代码应该可以正常工作了。
- 我在这里尝试使用您的方法,但在创建 core-site.xml 时得到以下信息:ERROR GPLNativeCodeLoader: Could not load native gpl library java.lang.UnsatisfiedLinkError: no gplcompression in java.library.path
来源:https://www.codenong.com/49696594/