Saya menggunakan spark 1.4.0-rc2 jadi saya bisa menggunakan python 3 dengan spark. Jika saya menambahkan export PYSPARK_PYTHON=python3
ke file .bashrc saya, saya dapat menjalankan spark secara interaktif dengan python 3. Namun, jika saya ingin menjalankan program mandiri dalam mode lokal, saya mendapatkan kesalahan:
Exception: Python in worker has different version 3.4 than that in driver 2.7, PySpark cannot run with different minor versions
Bagaimana cara menentukan versi python untuk driver? Pengaturan export PYSPARK_DRIVER_PYTHON=python3
tidak berhasil.
sumber
.bashrc
.Pengaturan
PYSPARK_PYTHON=python3
danPYSPARK_DRIVER_PYTHON=python3
keduanya ke python3 berfungsi untuk saya. Saya melakukan ini menggunakan ekspor di .bashrc saya. Pada akhirnya, ini adalah variabel yang saya buat:export SPARK_HOME="$HOME/Downloads/spark-1.4.0-bin-hadoop2.4" export IPYTHON=1 export PYSPARK_PYTHON=/usr/bin/python3 export PYSPARK_DRIVER_PYTHON=ipython3 export PYSPARK_DRIVER_PYTHON_OPTS="notebook"
Saya juga mengikuti tutorial ini untuk membuatnya bekerja dari dalam notebook Ipython3: http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support-for-pyspark/
sumber
PYSPARK_PYTHON=python3
mengatur versi Python dari pekerja, bukan?PYSPARK_PYTHON=python3; PYSPARK_DRIVER_PYTHON=ipython3
ke Run> Edit Configurations> {your_run_config}> Variabel Lingkungan. Untuk menjadikannya default untuk semua konfigurasi proses, perbarui Variabel Lingkungan untuk template yang diinginkan di bawah Run> Edit Configurations> TemplatesMembantu dalam kasus saya:
import os os.environ["SPARK_HOME"] = "/usr/local/Cellar/apache-spark/1.5.1/" os.environ["PYSPARK_PYTHON"]="/usr/local/bin/python3"
sumber
Anda dapat menentukan versi Python untuk driver dengan mengatur variabel lingkungan yang sesuai di
./conf/spark-env.sh
file. Jika belum ada, Anda dapat menggunakanspark-env.sh.template
file yang disediakan yang juga menyertakan banyak variabel lain.Berikut adalah contoh sederhana dari sebuah
spark-env.sh
file untuk mengatur variabel lingkungan Python yang relevan:#!/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
Dalam hal ini, ini menetapkan versi Python yang digunakan oleh pekerja / pelaksana ke Python3 dan versi driver Python ke iPython untuk shell yang lebih baik untuk bekerja.
Jika Anda belum memiliki
spark-env.sh
file, dan tidak perlu menyetel variabel lain, yang ini harus melakukan apa yang Anda inginkan, dengan asumsi bahwa jalur ke biner python yang relevan sudah benar (verifikasi denganwhich
). Saya memiliki masalah serupa dan ini memperbaikinya.sumber
Jika Anda menjalankan Spark di organisasi yang lebih besar dan tidak dapat memperbarui file /spark-env.sh, mengekspor variabel lingkungan mungkin tidak berfungsi.
Anda dapat menambahkan pengaturan Spark tertentu melalui
--conf
opsi saat mengirimkan pekerjaan pada saat dijalankan.pyspark --master yarn --[other settings]\ --conf "spark.pyspark.python=/your/python/loc/bin/python"\ --conf "spark.pyspark.driver.python=/your/python/loc/bin/python"
sumber
Saya baru saja menghadapi masalah yang sama dan ini adalah langkah-langkah yang saya ikuti untuk menyediakan versi Python. Saya ingin menjalankan pekerjaan PySpark saya dengan Python 2.7, bukan 2.6.
Pergi ke folder
$SPARK_HOME
yang dituju (dalam kasus saya/home/cloudera/spark-2.1.0-bin-hadoop2.7/
)Di bawah folder
conf
, ada file bernamaspark-env.sh
. Jika Anda memiliki file bernama,spark-env.sh.template
Anda perlu menyalin file ke file baru bernamaspark-env.sh
.Edit file dan tulis tiga baris berikutnya
Simpan dan luncurkan aplikasi Anda lagi :)
Dengan demikian, jika Anda mengunduh versi mandiri Spark baru, Anda dapat mengatur versi Python yang Anda inginkan untuk menjalankan PySpark.
sumber
cp
filespark-env.sh.template
sebagai yang baruspark-env.sh
dan kemudian mengubah file baru daripada mengubah nama dan konten template. Template seharusnya tetap sebagai referensi.Saya menemukan pesan kesalahan yang sama dan saya telah mencoba tiga cara yang disebutkan di atas. Saya membuat daftar hasil sebagai referensi pelengkap untuk orang lain.
PYTHON_SPARK
danPYTHON_DRIVER_SPARK
nilaispark-env.sh
tidak bekerja untuk saya.os.environ["PYSPARK_PYTHON"]="/usr/bin/python3.5"
os.environ["PYSPARK_DRIVER_PYTHON"]="/usr/bin/python3.5"
tidak berfungsi untuk saya.~/.bashrc
karya seperti pesona ~sumber
Saya menjalankannya di IPython (seperti yang dijelaskan dalam tautan ini oleh Jacek Wasilewski ) dan mendapatkan pengecualian ini; Ditambahkan
PYSPARK_PYTHON
ke file kernel IPython dan menggunakan notebook jupyter untuk dijalankan, dan mulai bekerja.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" }
sumber
Saya mendapat masalah yang sama tentang percikan mandiri di windows . Versi perbaikan saya seperti ini: Saya memiliki pengaturan variabel lingkungan seperti di bawah ini
PYSPARK_SUBMIT_ARGS="pyspark-shell" PYSPARK_DRIVER_PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS='notebook' pyspark
Dengan pengaturan ini saya menjalankan Action di pyspark dan mendapatkan pengecualian berikut:
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.
Untuk memeriksa dengan versi python mana yang digunakan spark-worker saya, tekan perintah berikut di prompt cmd .
python --version Python 3.6.3
yang menunjukkan Python 3.6.3 . Jadi jelas spark-worker saya menggunakan sistem python yang v3.6.3.
Sekarang ketika saya mengatur spark-driver saya untuk menjalankan jupyter dengan mengatur
PYSPARK_DRIVER_PYTHON=jupyter
jadi saya perlu memeriksa versi python yang digunakan jupyter.Untuk melakukan ini, buka Anaconda Prompt dan tekan
python --version Python 3.5.X :: Anaconda, Inc.
Berikut mendapat jupyter python menggunakan v3.5.x . Anda juga dapat memeriksa versi ini di Notebook manapun (Help-> About).
Sekarang saya perlu mengupdate jupyter python ke versi v3.6.6 . Untuk melakukan itu, buka Anaconda Prompt dan tekan
Ini akan memberi Anda daftar versi python yang tersedia di Anaconda. Instal yang Anda inginkan dengan
Sekarang saya memiliki kedua instalasi Python dari versi 3.6.3 Spark yang sama tidak sesuai dan tidak saat saya menjalankan Action pada Spark-driver. Pengecualian hilang. Selamat membuat kode ...
sumber
Jika Anda hanya ingin mengubah versi python untuk tugas saat ini, Anda dapat menggunakan perintah pyspark start berikut:
PYSPARK_DRIVER_PYTHON=/home/user1/anaconda2/bin/python PYSPARK_PYTHON=/usr/local/anaconda2/bin/python pyspark --master ..
sumber
Silakan lihat cuplikan di bawah ini:
#setting environment variable for pyspark in linux||ubuntu #goto --- /usr/local/spark/conf #create a new file named spark-env.sh copy all content of spark-env.sh.template to it #then add below lines to it, with path to python PYSPARK_PYTHON="/usr/bin/python3" PYSPARK_DRIVER_PYTHON="/usr/bin/python3" PYSPARK_DRIVER_PYTHON_OPTS="notebook --no-browser" #i was running python 3.6 ||run - 'which python' in terminal to find the path of python
sumber
Saya menggunakan lingkungan berikut
? python --version; ipython --version; jupyter --version Python 3.5.2+ 5.3.0 5.0.0
dan alias berikut bekerja dengan baik untuk saya
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"
Di notebook, saya mengatur lingkungan sebagai berikut
from pyspark.context import SparkContext sc = SparkContext.getOrCreate()
sumber
Kesalahan
Perbaiki (untuk lingkungan Cloudera)
Edit file ini:
/opt/cloudera/parcels/cdh5.5.4.p0.9/lib/spark/conf/spark-env.sh
Tambahkan baris ini:
export PYSPARK_PYTHON=/usr/bin/python export PYSPARK_DRIVER_PYTHON=python
sumber
Mengalami hal ini hari ini di tempat kerja. Admin menganggap sebaiknya kode keras Python 2.7 sebagai
PYSPARK_PYTHON
danPYSPARK_DRIVER_PYTHON
dalam$SPARK_HOME/conf/spark-env.sh
. Tidak perlu dikatakan, ini merusak semua pekerjaan kami yang menggunakan versi atau lingkungan python lain (yang> 90% dari pekerjaan kami). @PhillipStich menunjukkan dengan benar bahwa Anda mungkin tidak selalu memiliki izin menulis untuk file ini, seperti kasus kami. Sementara pengaturan konfigurasi dalamspark-submit
panggilan adalah sebuah opsi, alternatif lain (ketika berjalan dalam mode benang / cluster) adalah mengaturSPARK_CONF_DIR
variabel lingkungan untuk menunjuk ke skrip konfigurasi lain. Di sana Anda dapat menyetel PYSPARK_PYTHON Anda dan opsi lain yang mungkin Anda perlukan. Template dapat ditemukan di kode sumber spark-env.sh di github .sumber
Dalam kasus saya (Ubuntu 18.04), saya menjalankan kode ini di terminal:
dan kemudian diedit
SPARK_HOME
sebagai berikut:export SPARK_HOME=/home/muser/programs/anaconda2019/lib/python3.7/site-packages/pyspark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
Dengan melakukan itu, saya
SPARK_HOME
akan merujuk kepyspark
paket yang saya instal disite-package
.Untuk mempelajari cara menggunakan
vim
, buka tautan ini .sumber
Lari:
ls -l /usr/local/bin/python*
Baris pertama dalam contoh ini menunjukkan symlink python3. Untuk mengaturnya sebagai symlink python default, jalankan perintah berikut:
ln -s -f /usr/local/bin/python3 /usr/local/bin/python
lalu muat ulang shell Anda.
sumber
Saya memiliki masalah yang sama, hanya lupa mengaktifkan lingkungan virtual saya. Untuk siapa pun di luar sana yang juga memiliki mental kosong.
sumber
Jika Anda bekerja di mac, gunakan perintah berikut
export SPARK_HOME=`brew info apache-spark | grep /usr | tail -n 1 | cut -f 1 -d " "`/libexec export PYTHONPATH=$SPARK_HOME/python:$PYTHONPATH export HADOOP_HOME=`brew info hadoop | grep /usr | head -n 1 | cut -f 1 -d " "`/libexec export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native/:$LD_LIBRARY_PATH export PYSPARK_PYTHON=python3
Jika Anda menggunakan OS lain, periksa tautan berikut: https://github.com/GalvanizeDataScience/spark-install
sumber