Spark 版本 2.4.0 无法在 win7 上运行,因为导入错误:没有名为 'resource' 的模块



我试图在我的电脑上安装Spark 2.4.0版本,该系统是win7_x64。

然而,当我尝试运行简单的代码来检查spark是否准备好工作时:代码:

import os
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster('local[*]').setAppName('word_count')
sc = SparkContext(conf=conf)
d = ['a b c d', 'b c d e', 'c d e f']
d_rdd = sc.parallelize(d)
rdd_res = d_rdd.flatMap(lambda x: x.split(' ')).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a+b)
print(rdd_res)
print(rdd_res.collect())

我得到这个错误:

错误1

我打开worker.py文件来检查代码。

我发现,在2.4.0版本中,代码是:

worker.py v2.4.0

但是,在2.3.2版本中,代码为:

worker.py v2.3.2

然后我在hadoop2.7中重新安装了spark-2.3.2-bin,代码运行良好。

此外,我发现这个问题:ImportError:没有名为"resource"的模块

所以,我认为spark-2.4.0-bin-hadoop2.7不能在win7中工作,因为导入worker.py中的资源模块,这是一个Unix特定的包。

我希望有人能尽快解决这个问题。

我得到了这个错误,我在windows上有spark 2.4.0、jdk 11和kafka 2.11。我通过以下方式解决了这个问题:1( cd spark_home\python\lib
例如。cd C:\myprograms\spark-2.4.0-bin-hadoop2.7\python
2(解压缩pyspark.zip
3(编辑worker.py,注释掉"导入资源"以及下面的段落并保存文件。这段只是一个附加代码,不是核心代码,所以可以对其进行注释。
4(删除旧的pyspark.zip并创建新的zip。
5(在jupyter笔记本中重新启动内核。


worker.py-中的评论段落

# set up memory limits
#memory_limit_mb = int(os.environ.get('PYSPARK_EXECUTOR_MEMORY_MB', "-1"))
#total_memory = resource.RLIMIT_AS
#try:
#   if memory_limit_mb > 0:
#(soft_limit, hard_limit) = resource.getrlimit(total_memory)
#msg = "Current mem limits: {0} of max {1}n".format(soft_limit, hard_limit)
#print(msg, file=sys.stderr)
# convert to bytes
#new_limit = memory_limit_mb * 1024 * 1024
#if soft_limit == resource.RLIM_INFINITY or new_limit < soft_limit:
#    msg = "Setting mem limits to {0} of max {1}n".format(new_limit, new_limit)
#    print(msg, file=sys.stderr)
#    resource.setrlimit(total_memory, (new_limit, new_limit))
#except (resource.error, OSError, ValueError) as e:
#    # not all systems support resource limits, so warn instead of failing
#    print("WARN: Failed to set memory limit: {0}n".format(e), file=sys.stderr)

Python与最新发布的Spark 2.4.0版本存在一些兼容性问题。我也面临着类似的问题。如果您在系统中下载并配置Spark 2.3.2(更改环境变量(,问题就会得到解决。

相关内容

最新更新