Как заставить Spark2.3 работать в ноутбуке Jupyter - PullRequest
0 голосов
/ 15 октября 2018

Сейчас я пытаюсь заставить Spark2.3 работать в Jupyter Notebook.

В настоящее время у меня есть ядро, созданное следующим образом:

  1. создать файл среды:
$ cat rxie20181012-pyspark.yml

name: rxie20181012-pyspark

dependencies:

- pyspark
создать среду на основе файла среды

conda env create -f rxie20181012-pyspark.yml

активировать новую среду:

источник активировать rxie20181012-pyspark

создать ядро ​​на основе conda env:

sudo ./python -m ipykernel install --name rxie20181012-pyspark --display-name "Python (rxie20181012-pyspark)"

kernel.json выглядит следующим образом:

cat /usr/local/share/jupyter/kernels/rxie20181012-pyspark/kernel.json

{

"display_name": "Python (rxie20181012-pyspark)",

"language": "python",

"argv": [

"/opt / cloudera / parcels / Anaconda-4.2.0 / bin / python ",

" - m ",

" ipykernel ",

" - f ",

"{connection_file}"

]

}

Заметив, что записная книжка не удалась при импорте pyspark, я добавил раздел env, как показано ниже, в kernel.json:
{

 "display_name": "Python (rxie20181012-pyspark)",

 "language": "python",

 "argv": [

  "/opt/cloudera/parcels/Anaconda-4.2.0/bin/python",

  "-m",

  "ipykernel",

  "-f",

  "{connection_file}"

 ],

 "env": {

  "HADOOP_CONF_DIR": "/etc/spark2/conf/yarn-conf",

  "PYSPARK_PYTHON":"/opt/cloudera/parcels/Anaconda/bin/python",

  "SPARK_HOME": "/opt/cloudera/parcels/SPARK2",

  "PYTHONPATH": "/opt/cloudera/parcels/SPARK2/lib/spark2/python/lib/py4j-0.10.7-src.zip:/opt/cloudera/parcels/SPARK2/lib/spark2/python/",

  "PYTHONSTARTUP": "/opt/cloudera/parcels/SPARK2/lib/spark2/python/pyspark/shell.py",

  "PYSPARK_SUBMIT_ARGS": " --master yarn --deploy-mode client pyspark-shell"

 }

}

Теперь больше нет ошибки при импорте pyspark,но все еще не в состоянии запустить сеанс:

import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('abc').getOrCreate()

OSErrorTraceback (последний вызов был последним) в () ----> 1 spark = SparkSession.builder.appName ('abc').getOrCreate ()

/ opt / cloudera / parcels / SPARK2 / lib / spark2 / python / pyspark / sql / session.pyc в getOrCreate (self) 171 для ключа, значение в self._options.items ():172 sparkConf.set (ключ, значение) -> 173 sc = SparkContext.getOrCreate (sparkConf) 174 # Этот SparkContext может быть существующим.175 для ключа, значение в self._options.items ():

/ opt / cloudera / parcels / SPARK2 / lib / spark2 / python / pyspark / context.pyc в getOrCreate (cls, conf) 341 с SparkContext._lock: 342, если SparkContext._active_spark_context равен None: -> 343 SparkContext (conf = conf или SparkConf ()) 344 вернуть SparkContext._active_spark_context 345

/ opt / cloudera / parcels / SPARK2 / lib / sparkpython / pyspark / context.pyc в init (self, master, appName, sparkHome, pyFiles, окружение, batchSize, сериализатор, conf, gateway, jsc, profiler_cls) 113 "" "114 self._callsite = first_spark_call() или CallSite (Нет, Нет, Нет) -> 115 SparkContext._ensure_initialized (self, gateway = gateway, conf = conf) 116 try: 117 self._do_init (master, appName, sparkHome, pyFiles, среда, batchSize, сериализатор,

/ opt / cloudera / parcels / SPARK2 / lib / spark2 / python / pyspark / context.pyc в _ensure_initialized (cls, instance, gateway, conf) 290 с SparkContext._lock: 291, если не SparkContext._gateway: -> 292 лонжеронаkContext.conf) 81 def preexec_func (): 82 signal.signal (signal.SIGINT, signal.SIG_IGN) ---> 83 proc = Popen (команда, stdin = PIPE, preexec_fn = preexec_func, env = env) 84 другое: 85 # preexec_fnне поддерживается в Windows

/ opt / cloudera / parcels / Anaconda / lib / python2.7 / subprocess.pyc в init (self, args, bufsize, исполняемый файл, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags) 709 p2cread, p2cwrite, 710 c2pread, c2pwrite -,> 711 errread, errwrite) 712 кроме исключений: 713 # Сохранить исходное исключение в случае повышения os.close.

/ opt / cloudera / parcels / Anaconda / lib / python2.7 / subprocess.pyc в _execute_child (self, args, исполняемый файл, preexec_fn, close_fds, cwd, env, universal_newlines, startupinfo, creationflags, shell, to_close, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) 1341
повышение 1342 child_exception = pickle.loads> 1343 поднять child_exception 1344 1345

OSError: [Errno 2] Нет такого файла или каталога

Может кто-нибудь помочь мне разобраться, пожалуйста?Спасибо от всего сердца.

1 Ответ

0 голосов
/ 16 октября 2018

определена основная причина, и она работает сейчас:

"SPARK_HOME": "/ opt / cloudera / parcels / SPARK2"

следует заменить на:

"SPARK_HOME": "/ opt / cloudera / parcels / SPARK2 / lib / spark2"

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