apache-spark - 有没有办法在Hadoop 2.8+中使用PySpark?

标签 apache-spark hadoop pyspark

由于某些功能,我想使用特定版本的Hadoop(比如hadoop-aws 2.8.5)在本地运行PySpark作业。

PySpark版本似乎与Spark版本保持一致。

在这里,我使用PySpark 2.4.5,它似乎包装了Spark 2.4.5。

在使用spark-submit --local[4] ...--conf spark.jars.packages=org.apache.hadoop:hadoop-aws:2.8.5选项提交我的PySpark作业时,遇到以下错误:
py4j.protocol.Py4JJavaError: An error occurred while calling o32.sql
除以下Java异常外:

java.lang.NoClassDefFoundError: org/apache/hadoop/fs/StorageStatistics

要么:
java.lang.IllegalAccessError: tried to access method org.apache.hadoop.metrics2.lib.MutableCounterLong.<init (Lorg/apache/hadoop/metrics2/MetricsInfo;J)V from class org.apache.hadoop.fs.s3a.S3AInstrumentation

我想Pyspark Job Hadoop版本与我传递给spark-submit选项spark.jars.packages的版本不一致。

但是我不知道如何使它工作? :)

最佳答案

默认的spark disto包含hadoop库。首先使用Spark使用系统(自己的)库。因此,您应该设置--conf spark.driver.userClassPathFirst=true并为集群添加--conf spark.executor.userClassPathFirst=true或下载没有hadoop的spark发行版。可能您必须将您的hadoop发行版放到spark disto jars目录中。

关于apache-spark - 有没有办法在Hadoop 2.8+中使用PySpark?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60787243/

相关文章:

hadoop - 通过水槽在Twitter流中获取错误

java - 在 MapReduce 中读取整个文件

apache-spark - 使用 pyspark 从 s3 读取/加载 avro 文件

java - dataset.groupByKey() 中的 Spark CompileException

python-3.x - 如何在 Spark 数据帧中存储 Python 字节串

java - 如何检查YARN Mapreduce任务的最大堆大小设置

amazon-web-services - 使用 AWS Glue 时如何查找更新的行?

python - 如何格式化pyspark中的数字列?

scala - 为什么 spark-shell 失败并显示 "SymbolTable.exitingPhase...java.lang.NullPointerException"?

scala - Spark zipWithIndex 在并行实现中是否安全?