Spark Release 2.4.0 не может работать на win7 из-за ImportError: нет модуля с именем 'resource' - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь установить Spark Release 2.4.0 на мой компьютер, система которого win7_x64.

Однако, когда я пытаюсь запустить простой код, чтобы проверить, готова ли spark к работе: code:

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())

Я получаю эту ошибку:

error1

Я открываю файл worker.py, чтобы проверить код.

Я считаю, что в версии 2.4.0 код выглядит следующим образом:

worker.py v2.4.0

Однако в версии 2.3.2, код:

worker.py v2.3.2

Затем переустанавливаю spark-2.3.2-bin-hadoop2.7, код работает нормально.

Также я нахожу этот вопрос: ImportError: Нет модуля с именем 'resource'

Итак, я думаю, что spark-2.4.0-bin-hadoop2.7 не можетработать в win7 из-за импорта модуля ресурсов в worker.py, который является специфичным для Unix пакетом.

Я надеюсь, что кто-то может решить эту проблему в spark.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Я получил эту ошибку, и у меня есть Windows 2.4.0, JDK 11 и Кафка 2.11 на Windows.Я смог решить эту проблему, выполнив - 1) cd spark_home \ python \ libех.cd C: \ myprograms \ spark-2.4.0-bin-hadoop2.7 \ python2) распаковать pyspark.zip3) отредактируйте worker.py, закомментируйте 'import resource', а также следуйте пункту и сохраните файл.Этот пункт является просто дополнением и не является основным кодом, поэтому его можно закомментировать.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)
0 голосов
/ 08 февраля 2019

В Python есть проблемы с совместимостью с недавно выпущенной версией Spark 2.4.0.Я тоже сталкивался с подобной проблемой.Если вы загрузите и настроите Spark 2.3.2 в своей системе (измените переменные среды), проблема будет решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...