Обновление версии python в pyspark [duplicate]

Angular1

Для людей, которые используют AngularJS , может справиться с этой ситуацией, используя Promises.

Здесь it говорит,

Обещания могут использоваться для отключения асинхронных функций и позволяют объединять несколько функций вместе.

Вы можете найти приятное объяснение здесь .

Пример, найденный в docs , упомянутом ниже.

  promiseB = promiseA.then(
    function onSuccess(result) {
      return result + 1;
    }
    ,function onError(err) {
      //Handle error
    }
  );

 // promiseB will be resolved immediately after promiseA is resolved 
 // and its value will be the result of promiseA incremented by 1.

Angular2 and Later

In Angular2, посмотрите на следующий пример, но его рекомендовал использовать Observables с Angular2.

 search(term: string) {
     return this.http
  .get(`https://api.spotify.com/v1/search?q=${term}&type=artist`)
  .map((response) => response.json())
  .toPromise();

}

Вы можете использовать это таким образом,

search() {
    this.searchService.search(this.searchField.value)
      .then((result) => {
    this.result = result.artists.items;
  })
  .catch((error) => console.error(error));
}

См. здесь оригинал . Но TypScript не поддерживает native es6 Promises , если вы хотите его использовать, для этого вам может понадобиться плагин.

Кроме того, здесь представлены обещания spec определите здесь.

49
задан Kevin 28 May 2015 в 22:52
поделиться

12 ответов

Вам нужно убедиться, что автономный проект, который вы запускаете, запускается с помощью python 3. Если вы отправляете свою автономную программу через spark-submit, тогда она должна работать нормально, но если вы запускаете ее с помощью python, убедитесь, что вы используете python3, чтобы запустить ваше приложение.

Также убедитесь, что вы установили переменные env в ./conf/spark-env.sh (если он не существует, вы можете использовать spark-env.sh.template в качестве базы.

17
ответ дан Roland Weber 23 August 2018 в 19:07
поделиться

Я запускал его в IPython (как описано в этой ссылке Jacek Wasilewski ) и получал это исключение; Добавлен файл PYSPARK_PYTHON в файл ядра IPython и используется jupyter notebook для запуска и начал работать.

vi  ~/.ipython/kernels/pyspark/kernel.json

{
 "display_name": "pySpark (Spark 1.4.0)",
 "language": "python",
 "argv": [
  "/usr/bin/python2",
  "-m",
  "IPython.kernel",
  "--profile=pyspark",
  "-f",
  "{connection_file}"
 ],

 "env": {
  "SPARK_HOME": "/usr/local/spark-1.6.1-bin-hadoop2.6/",
  "PYTHONPATH": "/usr/local/spark-1.6.1-bin-hadoop2.6/python/:/usr/local/spark-1
.6.1-bin-hadoop2.6/python/lib/py4j-0.8.2.1-src.zip",
  "PYTHONSTARTUP": "/usr/local/spark-1.6.1-bin-hadoop2.6/python/pyspark/shell.py
",
  "PYSPARK_SUBMIT_ARGS": "--master spark://127.0.0.1:7077 pyspark-shell",
  "PYSPARK_DRIVER_PYTHON":"ipython2",
   "PYSPARK_PYTHON": "python2"
 }
1
ответ дан Alex Punnen 23 August 2018 в 19:07
поделиться

Ошибка

"Исключение: у Python у работника разная версия 2.6, чем у драйвера 2.7, PySpark не может работать с разными второстепенными версиями".

Fix (для среды Cloudera)

  • Редактировать этот файл: /opt/cloudera/parcels/cdh5.5.4.p0.9/lib/spark/conf/spark-env.sh
  • Добавить следующие строки:
    export PYSPARK_PYTHON=/usr/bin/python
    export PYSPARK_DRIVER_PYTHON=python
    
0
ответ дан cricket_007 23 August 2018 в 19:07
поделиться

Я просто столкнулся с той же проблемой, и это шаги, которые я выполняю, чтобы предоставить версию Python. Я хотел запустить мои задания PySpark с помощью Python 2.7 вместо 2.6.

  1. Перейдите в папку, где $SPARK_HOME указывает (в моем случае /home/cloudera/spark-2.1.0-bin-hadoop2.7/)
  2. В папке conf есть файл с именем spark-env.sh ]. Если у вас есть файл с именем spark-env.sh.template, вам нужно будет скопировать файл в новый файл с именем spark-env.sh.
  3. Отредактируйте файл и напишите следующие три строки экспорта PYSPARK_PYTHON = / usr / local / bin / python2.7 export PYSPARK_DRIVER_PYTHON = / usr / local / bin / python2.7 export SPARK_YARN_USER_ENV = "PYSPARK_PYTHON = / usr / local / bin / python2.7"
  4. Сохраните его и запустите приложение еще раз: )

Таким образом, если вы загрузите отдельную автономную версию Spark, вы можете установить версию Python, к которой вы хотите запустить PySpark.

1
ответ дан dbustosp 23 August 2018 в 19:07
поделиться

Я использую следующую среду

? python --version; ipython --version; jupyter --version
Python 3.5.2+
5.3.0
5.0.0

, и следующие псевдонимы хорошо работают для меня

alias pyspark="PYSPARK_PYTHON=/usr/local/bin/python3 PYSPARK_DRIVER_PYTHON=ipython ~/spark-2.1.1-bin-hadoop2.7/bin/pyspark --packages graphframes:graphframes:0.5.0-spark2.1-s_2.11"    
alias pysparknotebook="PYSPARK_PYTHON=/usr/bin/python3 PYSPARK_DRIVER_PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS='notebook' ~/spark-2.1.1-bin-hadoop2.7/bin/pyspark --packages graphframes:graphframes:0.5.0-spark2.1-s_2.11"

В записной книжке я настроил среду следующим образом

from pyspark.context import SparkContext
sc = SparkContext.getOrCreate()
0
ответ дан George Fisher 23 August 2018 в 19:07
поделиться

Выйди в это сегодня на работе. Администратор счел разумным использовать жесткий код Python 2.7 как PYSPARK_PYTHON и PYSPARK_DRIVER_PYTHON в $SPARK_HOME/conf/spark-env.sh. Излишне говорить, что это сломало все наши рабочие места, которые используют любые другие версии или среды python (что составляет> 90% наших рабочих мест). @PhillipStich правильно указывает, что у вас могут не всегда быть разрешения на запись для этого файла, как и в нашем случае. Хотя настройка конфигурации в вызове spark-submit является опцией, другая альтернатива (при запуске в режиме пряжи / кластера) заключается в установке переменной среды SPARK_CONF_DIR для указания на другой сценарий конфигурации. Там вы можете установить PYSPARK_PYTHON и любые другие параметры, которые могут вам понадобиться. Шаблон можно найти в исходном коде spark_env.sh на github .

0
ответ дан Grr 23 August 2018 в 19:07
поделиться

Вы можете указать версию Python для драйвера, установив соответствующие переменные среды в файле ./conf/spark-env.sh. Если он еще не существует, вы можете использовать предоставленный файл spark-env.sh.template, который также включает в себя множество других переменных.

Вот простой пример файла spark-env.sh для установки соответствующих переменных среды Python :

#!/usr/bin/env bash

# This file is sourced when running various Spark programs.
export PYSPARK_PYTHON=/usr/bin/python3       
export PYSPARK_DRIVER_PYTHON=/usr/bin/ipython

В этом случае он устанавливает версию Python, используемую рабочими / исполнителями, для Python3 и версию драйвера Python для iPython для более удобной оболочки.

Если у вас еще нет файла spark-env.sh и не нужно устанавливать какие-либо другие переменные, это должно делать то, что вы хотите, предполагая, что пути к соответствующим бинарным файлам python верны (проверьте с помощью which) , У меня была аналогичная проблема, и это исправило это.

7
ответ дан James Clarke 23 August 2018 в 19:07
поделиться

Если вы хотите изменить версию python для текущей задачи, вы можете использовать следующую команду запуска pyspark:

    PYSPARK_DRIVER_PYTHON=/home/user1/anaconda2/bin/python PYSPARK_PYTHON=/usr/local/anaconda2/bin/python pyspark --master ..
0
ответ дан Peter Pan 23 August 2018 в 19:07
поделиться

Если вы используете Spark в более крупной организации и не можете обновить файл /spark-env.sh, экспорт переменных среды может не сработать.

Вы можете добавить определенные параметры искры через --conf при отправке задания во время выполнения.

pyspark --master yarn --[other settings]\ 
  --conf "spark.pyspark.python=/your/python/loc/bin/python"\ 
  --conf "spark.pyspark.driver.python=/your/python/loc/bin/python"
1
ответ дан Phillip Stich 23 August 2018 в 19:07
поделиться

У меня такая же проблема на автономной искре в окнах. Моя версия исправления выглядит так: у меня были переменные окружения, как показано ниже:

PYSPARK_SUBMIT_ARGS="pyspark-shell"
PYSPARK_DRIVER_PYTHON=jupyter
PYSPARK_DRIVER_PYTHON_OPTS='notebook' pyspark

С помощью этого параметра я выполнил действие на pyspark и получил следующее исключение:

Python in worker has different version 3.6 than that in driver 3.5, PySpark cannot run with different minor versions.
Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.

Чтобы проверить, с какой версией python мой искровой рабочий использует, нажмите следующее в приглашении cmd .

python --version
Python 3.6.3

, который показал мне Python 3.6.3 . Таким образом, мой искровой рабочий использует системный python, который является v3.6.3.

Теперь, когда я установил искровой драйвер , чтобы запустить jupyter, установив PYSPARK_DRIVER_PYTHON=jupyter, поэтому мне нужно проверить версию python, используемую jupyter.

Чтобы сделать это, откройте Anaconda Prompt и нажмите

python --version
Python 3.5.X :: Anaconda, Inc.

jupyter python использует v3.5.x . Вы можете проверить эту версию и в любом ноутбуке (Help-> About).

Теперь мне нужно обновить jupyter python до версии v3.6.6 . Для этого откройте Anaconda Prompt и нажмите

conda search python

. Это даст вам список доступных python версии в Анаконде. Установите желаемый с помощью

conda install python = 3.6.3

Теперь у меня есть обе установки на Python той же версии 3.6.3. Искра не должна и это не произошло, когда я запустил Action on Spark-driver. Исключение ушло. Счастливое кодирование ...

0
ответ дан Rizvi Hasan 23 August 2018 в 19:07
поделиться

Помог в моем случае:

import os

os.environ["SPARK_HOME"] = "/usr/local/Cellar/apache-spark/1.5.1/"
os.environ["PYSPARK_PYTHON"]="/usr/local/bin/python3"
12
ответ дан Stefan Falk 23 August 2018 в 19:07
поделиться

Я столкнулся с тем же сообщением об ошибке, и я попробовал три способа, упомянутые выше. Я перечислил результаты как дополнительную ссылку на другие.

  1. Измените значение PYTHON_SPARK и PYTHON_DRIVER_SPARK в spark-env.sh для меня не работает.
  2. Измените значение внутри скрипта python с использованием os.environ["PYSPARK_PYTHON"]="/usr/bin/python3.5" os.environ["PYSPARK_DRIVER_PYTHON"]="/usr/bin/python3.5" не работает для меня.
  3. Изменить значение в ~/.bashrc работает как заклинание ~
0
ответ дан trevorp 23 August 2018 в 19:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: