我们使用的平台有 Spark 2.4.7 和 Hadoop 2.7.7 库的限制。 我们在 s3 上有一些 zstandard parquet 格式的数据。 有没有一种方法可以让我们编写某种客户代码来在我们的工作中读取这个 zstandard 镶木地板?
我们无权访问基础设施,因此无法在计算机上安装任何其他内容。我们可以增加或减少执行者(垂直和水平)。
我们对作业代码有完全的控制权,这就是我们需要在平台上管理和提交的代码,该平台将代码提交到Spark并执行它。
当我们尝试使用spark.read.parquet(“文件路径”)读取文件时,我们收到此错误:java.lang.ClassNotFoundException:org.apache.hadoop.io.compress.ZStandardCodec
这显然是预料之中的。 当我们包含 hadoop-common 2.9.1 依赖项(该依赖项具有 zstandard 编解码器支持)时,我们会收到另一个错误: 这个版本的 libhadoop 是在没有 zstd 支持的情况下构建的
有没有办法编写一个自定义类来将 zstandard 压缩镶木地板读取到 Spark 数据帧中?
仅供参考:我已经检查了其他一些 SOF 问题,但没有涵盖我的用例。特别是由于对基础设施访问的限制。
因此,如果您需要 Zstandard,则需要使用 2017 年或更高版本发布的 hadoop 版本。
唯一的解决方法是: