我们在使用Spark 2.4.7和Hadoop 2.7.7库的平台上有一个限制。我们有一些数据目前在s3这是在zstandardParquet格式。有没有一种方法,我们可以写一个custome代码的某种形式来读取这个zstandardParquet地板在我们的工作?
我们无法访问基础设施,因此无法在机器上安装任何其他东西。我们可以增加或减少执行器(垂直和水平)。
我们完全控制作业代码,这就是我们需要在平台上管理和提交的内容,平台将代码提交给Spark并执行它。
当我们尝试使用spark.read.parquet(“file path”)读取文件时,我们会得到以下错误:java.lang.ClassNotFoundException:org.apache.hadoop.io.compress.ZStandardCodec
这显然是预料之中的。当我们包含hadoop-common 2.9.1依赖项时,它支持zstandard编解码器,我们得到另一个错误:此版本的libhadoop构建时不支持zstd
有没有办法写一个custome类来读取zstandard压缩的parquet到Spark Dataframe 中?
仅供参考:我已经检查了一些其他的SOF问题,没有涵盖我的用例。特别是由于对基础设施准入的限制。
1条答案
按热度按时间t2a7ltrp1#
1.你不能混合hadoop-jar版本,就像你不能混合spark版本一样。
因此,如果您需要Zstandard,则需要使用 * 2017年或更高版本的Hadoop *。
唯一的解决方法是:
两条路都注定要失败;第二种可能性如果不是因为当地的东西。