Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 有没有办法将PySpark与Hadoop 2.8+;结合使用;?_Apache Spark_Hadoop_Pyspark - Fatal编程技术网

Apache spark 有没有办法将PySpark与Hadoop 2.8+;结合使用;?

Apache spark 有没有办法将PySpark与Hadoop 2.8+;结合使用;?,apache-spark,hadoop,pyspark,Apache Spark,Hadoop,Pyspark,由于一些特性,我希望使用特定版本的Hadoop(比如Hadoop aws 2.8.5)在本地运行PySpark作业 PySpark版本似乎与Spark版本一致 这里我使用PySpark 2.4.5,它似乎包裹了Spark 2.4.5 提交PySpark作业时,使用spark submit--local[4]…,并选择--conf spark.jars.packages=org.apache.hadoop:hadoop aws:2.8.5,我遇到以下错误: py4j.protocol.Py4JJa

由于一些特性,我希望使用特定版本的Hadoop(比如Hadoop aws 2.8.5)在本地运行PySpark作业

PySpark版本似乎与Spark版本一致

这里我使用PySpark 2.4.5,它似乎包裹了Spark 2.4.5

提交PySpark作业时,使用
spark submit--local[4]…
,并选择
--conf spark.jars.packages=org.apache.hadoop:hadoop aws:2.8.5
,我遇到以下错误:

py4j.protocol.Py4JJavaError:调用o32.sql时出错

除了以下java例外:

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


java.lang.IllegalAccessError:尝试访问org.apache.hadoop.metrics2.lib.MutableCounterLong方法。默认spark disto包含hadoop库。Spark首先使用系统(自己的)库。因此,您应该设置
--conf spark.driver.userClassPathFirst=true
,并为集群添加
--conf spark.executor.userClassPathFirst=true
,或者在不使用hadoop的情况下下载spark发行版。可能您必须将hadoop发行版放入spark disto jars目录。

好的,我找到了一个解决方案:

1-以预期版本安装Hadoop(对于我来说是2.8.5)

2-安装一个无Hadoop版本的Spark(2.4.4适用于我)

3-设置
SPARK\u DIST\u CLASSPATH
环境变量,使SPARK使用自定义版本的Hadoop

(参见)

4-将PySpark目录添加到
PYTHONPATH
环境变量中,如下所示:

导出PYTHONPATH=$SPARK\u HOME/python/lib/py4j-0.10.7-src.zip:$SPARK\u HOME/python:$SPARK\u HOME/python/build:$PYTHONPATH
(请注意,py4j版本与我的不同)


就是这样。

hadoop集群也是本地的吗?如果是,那太好了。如果不是的话,原则是“将计算引入数据”,而不是“将数据引入计算”@Z4层:是的。
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