Сейчас я пытаюсь заставить Spark2.3 работать в Jupyter Notebook.
В настоящее время у меня есть ядро, созданное следующим образом:
- создать файл среды:
$ 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] Нет такого файла или каталога
Может кто-нибудь помочь мне разобраться, пожалуйста?Спасибо от всего сердца.