Нет имени модуля pyspark error

Это точный код из учебника, за которым я следую. Мой одноклассник не получил эту ошибку с тем же кодом:

ImportError                                Traceback (most recent call last)

<ipython-input-1-c6e1bed850ab> in <module>()
----> 1 from pyspark import SparkContext
      2 sc = SparkContext('local', 'Exam_3')
      3 
      4 from pyspark.sql import SQLContext
      5 sqlContext = SQLContext(sc)

ImportError: No module named pyspark

Это код:

from pyspark import SparkContext
sc = SparkContext('local', 'Exam_3')
from pyspark.sql import SQLContext    
sqlContext = SQLContext(sc)
data = sc.textFile("exam3")
parsedData = data.map(lambda line: [float(x) for x in line.split(',')])
retail = sqlContext.createDataFrame(parsedData, 
     ['category_name','product_id', 'product_name', 'product_price'])
retail.registerTempTable("exam3")
print parsedData.take(3)

Ответ 1

У вас нет pyspark, установленного в месте, доступном для используемой установки python. Чтобы подтвердить это, на терминале командной строки с активированным virtualenv введите свой REPL (python) и введите import pyspark:

$ python
Python 3.5.0 (default, Dec  3 2015, 09:58:14) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.1.76)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyspark
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'pyspark'

Если вы видите No module name 'pyspark' ImportError, вам необходимо установить эту библиотеку. Выйдите из REPL и введите:

pip install pyspark

Затем заново введите repl для подтверждения:

$ python
Python 3.5.0 (default, Dec  3 2015, 09:58:14) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.1.76)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyspark
>>>

В качестве примечания важно, чтобы ваша виртуальная среда была активирована. Когда в каталоге вашей виртуальной среды:

$ source bin/activate

Эти инструкции предназначены для машины на основе unix и будут различаться для Windows.

Ответ 2

Вы можете использовать findspark, чтобы сделать свечу доступной во время выполнения. Обычно findspark найдет каталог, в котором вы установили искру, но если он установлен в нестандартном местоположении, вы можете указать его в правильный каталог. Как только вы установили findspark, если искра установлена ​​на /path/to/spark_home, просто поставьте

import findspark
findspark.init('/path/to/spark_home')

в самой верхней части вашего script/notebook, и теперь вы должны иметь доступ к модулю pyspark.

Ответ 3

Просто используйте:

import findspark
findspark.init()

import pyspark # only run after findspark.init()

Если у вас нет модуля findspark, установите его с помощью:

python -m pip install findspark