আমি কীভাবে চালকের অজগর সংস্করণটি স্পার্কে সেট করব?


88

আমি স্পার্ক 1.4.0-rc2 ব্যবহার করছি তাই আমি স্পার্ক সহ পাইথন 3 ব্যবহার করতে পারি। আমি যদি যোগ করিexport PYSPARK_PYTHON=python3 আমার .bashrc ফাইলটিতে যুক্ত করি তবে অজগর 3 দিয়ে ইন্টারেক্টিভভাবে স্পার্ক চালাতে পারি However তবে, আমি যদি স্থানীয় মোডে স্ট্যান্ড স্টোন প্রোগ্রাম চালাতে চাই তবে আমি একটি ত্রুটি পেয়েছি:

Exception: Python in worker has different version 3.4 than that in driver 2.7, PySpark cannot run with different minor versions

আমি কীভাবে ড্রাইভারের জন্য অজগরটির সংস্করণটি নির্দিষ্ট করতে পারি? সেটিংয়ের export PYSPARK_DRIVER_PYTHON=python3কাজ হয়নি।

উত্তর:


34

আপনাকে নিশ্চিত করতে হবে যে আপনি যে স্ট্যান্ডেলোন প্রজেক্টটি চালু করছেন তা পাইথন ৩ দিয়ে চালু হয়েছে If আপনার অ্যাপ্লিকেশন

এছাড়াও, নিশ্চিত করুন যে আপনি নিজের এনভ ভেরিয়েবলগুলি সেট করেছেন ./conf/spark-env.sh(যদি এটি বিদ্যমান না থাকে তবে আপনি spark-env.sh.templateবেস হিসাবে ব্যবহার করতে পারেন ))


4
@ কেভিন - আমারও একই সমস্যা হচ্ছে, আপনি কি স্পার্ক-ইন.এনএস-তে পরিবর্তন করেছেন সে সম্পর্কে আপনার সমাধান পোস্ট করতে পারেন?
দেব প্যাটেল

4
এটি পরিবর্তনের পরিবর্তে PATH ভেরিয়েবলগুলি স্পার্কে প্রেরণার সঠিক উপায় .bashrc
সিএজেড

কেন পাইথন 3 ব্যবহারের প্রয়োজন হোল্ডেন?
জর্জি

পাইথন 2 তে স্পার্ক চলতে পারে তবে এই ক্ষেত্রে ব্যবহারকারী তাদের প্রশ্নের মধ্যে পাইথন 3 নির্দিষ্ট করার চেষ্টা করছেন। পাইথনের যে কোনও সংস্করণ এটির ধারাবাহিকভাবে করা দরকার।
হোল্ডেন

83

পাইথন 3 এ সেটিং PYSPARK_PYTHON=python3এবং PYSPARK_DRIVER_PYTHON=python3উভয়ই আমার জন্য কাজ করে। আমি আমার .bashrc এ রফতানি ব্যবহার করে এটি করেছি। শেষ পর্যন্ত, এগুলি আমার তৈরি ভেরিয়েবলগুলি:

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"

আমি এই টিউটোরিয়ালটি আইপিথন 3 নোটবুকের মধ্যে থেকে কাজ করার জন্য অনুসরণ করেছি: http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support- for-pyspark/


4
"আইপাইথন = 1" বিকল্পের সাথে সম্পর্কিত স্পার্ক ২.১ এ একটি ত্রুটি রয়েছে। ত্রুটি বার্তাগুলি হ'ল "আইপাইথন এবং আইপিওয়াইথন_ওপিটিএস স্পার্ক ২.০++ এ মুছে ফেলা হয়েছে these পরিবেশ থেকে এগুলি সরিয়ে PYSPARK_DRIVER_PYTHON এবং PYSPARK_DRIVER_PYTHON_OPTS পরিবর্তে সেট করুন।"
notilas

4
PYSPARK_PYTHON=python3কর্মীদের পাইথন সংস্করণ সেট করে, তাই না?
জো

পাইচার্ম থেকে চলতে থাকলে চালিত PYSPARK_PYTHON=python3; PYSPARK_DRIVER_PYTHON=ipython3করুন> কনফিগারেশন সম্পাদনা করুন> {your_run_config}> পরিবেশ পরিবর্তনশীল যোগ করুন। এগুলি সমস্ত রান কনফিগারেশনের জন্য ডিফল্ট করতে, রান> কনফিগারেশন সম্পাদনা> টেমপ্লেটস
মিস্টারএড

28

আমার ক্ষেত্রে সহায়ক:

import os

os.environ["SPARK_HOME"] = "/usr/local/Cellar/apache-spark/1.5.1/"
os.environ["PYSPARK_PYTHON"]="/usr/local/bin/python3"

4
এটি পিওয়াইএসপিআরক_ডায়ারওয়্যারপয়িথনকে পিওয়াইএসপিআরপি_পথার সাথে একই মান হিসাবে সেট করার পরে আমার পক্ষে কাজ করে।
buxizhizhoum

12

আপনি ./conf/spark-env.shফাইলের জন্য উপযুক্ত পরিবেশের ভেরিয়েবল সেট করে ড্রাইভারের জন্য পাইথনের সংস্করণ নির্দিষ্ট করতে পারেন । যদি এটি ইতিমধ্যে বিদ্যমান না থাকে তবে আপনি spark-env.sh.templateসরবরাহিত ফাইলটি ব্যবহার করতে পারেন যার মধ্যে প্রচুর অন্যান্য ভেরিয়েবল রয়েছে।

spark-env.shপ্রাসঙ্গিক পাইথন এনভায়রনমেন্ট ভেরিয়েবল সেট করার জন্য এখানে একটি ফাইলের একটি সাধারণ উদাহরণ রয়েছে :

#!/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

এক্ষেত্রে এটি শ্রমিক / এক্সিকিউটিউটরদের দ্বারা পাইথন 3-তে ব্যবহৃত পাইথনের সংস্করণ এবং পাইথনের ড্রাইভার সংস্করণটি আইপিথন থেকে একটি নিখর শেল কাজ করার জন্য সেট করে।

আপনার যদি ইতিমধ্যে কোনও spark-env.shফাইল না থাকে এবং অন্য কোনও ভেরিয়েবল সেট করার দরকার না হয় তবে প্রাসঙ্গিক পাইথন বাইনারিগুলির পথটি সঠিক (ধরে তা যাচাই করে which) ধরে নেওয়া এইটিকে আপনার যা করা উচিত তা করা উচিত । আমারও একই সমস্যা ছিল এবং এটি এটি স্থির করে।


এই ফাইলটি কীভাবে চালানো যায়?
ভোল্টিল 3

আমি স্পার্ক- env.sh.template নামটি স্পার্ক -en.v.sh এ নামকরণ করতে হয়েছিল এবং তারপরে ফাইল এক্সপোর্ট পিওয়াইএসপিআরকিপিওয়াইথন = / ইউএসআর / স্থানীয় / বিন / পাইথন 3 এক্সপোর্ট পিওয়াইএসপিআর_ড্রাইভারপাইথন = / ইউএসআর / লোকাল / বিন / পাইথন 3 এর লেজ যুক্ত করতে হয়েছিল। আমার পাইথন 3টি কোথায় ছিল অজানা 3
ড্যানিভিকারিও

10

যদি আপনি একটি বৃহত্তর প্রতিষ্ঠানে স্পার্ক চালাচ্ছেন এবং /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"

9

আমি কেবল একই সমস্যার মুখোমুখি হয়েছি এবং পাইথন সংস্করণ সরবরাহের জন্য এই পদক্ষেপগুলি আমি অনুসরণ করি। আমি পাইথপার্ক জবগুলিকে পাইথন ২.7 এর পরিবর্তে ২.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. ফাইলটি সম্পাদনা করুন এবং পরবর্তী তিনটি লাইন লিখুন

    পিওয়াইস্পার্ক_পায়থন = / ইউএসআর / স্থানীয় / বিন / পাইথন 2.7 রফতানি করুন

    পিওয়াইএসএসপিআর_ড্রাইভার_পাইথন = / ইউএসআর / স্থানীয় / বিন / পাইথন 2.7 রফতানি করুন

    রফতানুন SPark_YARN_USER_ENV = "পিওয়াইএসপিআরকিপথাইথন = / ইউএসআর / স্থানীয় / বিন / পাইথন 2.7"

  4. এটি সংরক্ষণ করুন এবং আপনার অ্যাপ্লিকেশন আবার চালু করুন :)

এইভাবে, আপনি যদি একটি নতুন স্পার্ক স্ট্যান্ডअোনাল সংস্করণ ডাউনলোড করেন তবে আপনি পাইথ স্প্রেনটি চালাতে চান যে পাইথন সংস্করণ সেট করতে পারেন।


4
দ্রষ্টব্যটি নতুন হিসাবে cpফাইলের প্রতি পরামর্শ এবং তারপরে টেমপ্লেটের নাম এবং সামগ্রী পরিবর্তনের পরিবর্তে নতুন ফাইলটি পরিবর্তন করুন change টেমপ্লেটটি একটি রেফারেন্স হিসাবে থাকার কথা। spark-env.sh.templatespark-env.sh
এট_ল

@et_l আপনি ঠিকই বলেছেন, আমি আপনার মন্তব্যে বিবেচনা করে জবাবটিতে কিছুটা পরিবর্তন করেছি, ধন্যবাদ!
সেল্কনাম

5

আমি একই ত্রুটি বার্তাটি পেয়েছি এবং আমি উপরে উল্লিখিত তিনটি উপায় চেষ্টা করেছি। আমি ফলাফলগুলি অন্যদের পরিপূরক রেফারেন্স হিসাবে তালিকাভুক্ত করেছি।

  1. পরিবর্তন করুন PYTHON_SPARKএবং PYTHON_DRIVER_SPARKমান spark-env.shআমার জন্য কাজ করে না।
  2. পাইথন স্ক্রিপ্টের ভিতরে মানটি ব্যবহার os.environ["PYSPARK_PYTHON"]="/usr/bin/python3.5" os.environ["PYSPARK_DRIVER_PYTHON"]="/usr/bin/python3.5"করে আমার কাজ করে না।
  3. ~/.bashrcকবজ like এর মতো কাজের ক্ষেত্রে মানটি পরিবর্তন করুন ~

আপনার মন্তব্যটি একটি ঘন্টা কাটানোর পরে খাঁটি সোনার ধন্যবাদ
han

আপনাকে অনেক ধন্যবাদ. আমি অনেকগুলি সমাধান পরীক্ষা করেছি। আপনার খুব সুন্দরভাবে কাজ করেছেন।
মুসার

3

আমি এটি আইপিতে চালাচ্ছিলাম (জ্যাসেক ওয়াসিলিউস্কির এই লিঙ্কে বর্ণিত ) এবং এই ব্যতিক্রমটি পাচ্ছি ; যোগ করা হয়েছে PYSPARK_PYTHONIPython কার্নেল ফাইল এবং চালানোর জন্য ব্যবহৃত jupyter নোটবুক, এবং তারপরে শুরু পরিশ্রমী হতে।

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"
 }

2

আমি একই সমস্যা পেয়েছিলাম স্বতন্ত্র স্ফুলিঙ্গ মধ্যে উইন্ডোজ । আমার ঠিকঠাকের সংস্করণটি এরকম: আমার পরিবেশগত পরিবর্তনশীলগুলি বেলো হিসাবে সেট করা ছিল setting

PYSPARK_SUBMIT_ARGS="pyspark-shell"
PYSPARK_DRIVER_PYTHON=jupyter
PYSPARK_DRIVER_PYTHON_OPTS='notebook' 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 --version
Python 3.6.3

যা আমাকে পাইথন ৩.6.৩ দেখিয়েছে । সুতরাং স্পষ্টতই আমার স্পার্ক-কর্মীরা সিস্টেম অজগরটি ব্যবহার করছে যা v3.6.3।

এখন আমি যখন আমার স্পার্ক-ড্রাইভারকে সেট করে জুপিটর চালানোর জন্য সেট করেছি PYSPARK_DRIVER_PYTHON=jupyterতাই অজগর সংস্করণ জুপিটারটি ব্যবহার করছে তা আমার চেক করা দরকার।

এই চেকটি করতে অনাকোন্ডা প্রম্পটটি খুলুন এবং হিট করুন

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

এখানে jupyter পাইথন ব্যবহার করছে পেয়েছিলাম v3.5.x । আপনি যে কোনও নোটবুক (সহায়তা-> সম্পর্কে) এ এই সংস্করণটিও পরীক্ষা করতে পারেন।

এখন আমার জপিটার পাইথনটি v3.6.6 সংস্করণে আপডেট করতে হবে । এটি করার জন্য অ্যানাকোন্ডা প্রম্পটটি খুলুন এবং হিট করুন

কনডা অনুসন্ধান অজগর

এটি আপনাকে অ্যানাকোন্ডায় পাওয়া অজগর সংস্করণগুলির একটি তালিকা দেবে। আপনার পছন্দসই সাথে ইনস্টল করুন

কনডা ইনস্টল পাইথন = 3.6.3

এখন আমার কাছে একই সংস্করণ 3.6.3 এর পাইথন ইনস্টলেশন উভয়ই রয়েছে স্পার্কটি মেনে চলবে না এবং যখন আমি স্পার্ক-ড্রাইভারের সাথে অ্যাকশন চালাতাম তখন তা হয় নি। ব্যতিক্রম চলে গেছে। শুভ কোডিং ...


1

আপনি যদি কেবলমাত্র বর্তমান টাস্কের জন্য পাইথন সংস্করণটি পরিবর্তন করতে চান তবে আপনি নিম্নলিখিত পাইপর্ক স্টার্ট কমান্ডটি ব্যবহার করতে পারেন:

    PYSPARK_DRIVER_PYTHON=/home/user1/anaconda2/bin/python PYSPARK_PYTHON=/usr/local/anaconda2/bin/python pyspark --master ..

1

দয়া করে নীচের স্নিপেটটি দেখুন:

#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

পোস্ট করার আগে টেমপ্লেটগুলি চেক করুন।
দীপেশ রেহি

0

আমি নিম্নলিখিত পরিবেশটি ব্যবহার করছি

? 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

ত্রুটি

"ব্যতিক্রম: কর্মী অজগরটির ড্রাইভারের 2.7 এর তুলনায় 2.6 এর আলাদা সংস্করণ রয়েছে, পাইসপার্ক বিভিন্ন ছোটখাটো সংস্করণ দিয়ে চলতে পারে না"। 

ঠিক করুন (ক্লৌডের পরিবেশের জন্য)

  • এই ফাইলটি সম্পাদনা করুন: /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

আজ কাজের মধ্যে এই মধ্যে দৌড়ে। একজন প্রশাসক এটিকে PYSPARK_PYTHONএবং PYSPARK_DRIVER_PYTHONএর হিসাবে হার্ড কোড পাইথন ২.7 কে বুদ্ধিমান বলে মনে করেছিলেন $SPARK_HOME/conf/spark-env.sh। এটি বলার অপেক্ষা রাখে না যে এটি আমাদের সমস্ত চাকরি ভেঙে দিয়েছে যা অন্য কোনও অজগর সংস্করণ বা পরিবেশ ব্যবহার করে (যা আমাদের কাজের 90%)। @ ফিলিপ স্টিচ সঠিকভাবে উল্লেখ করেছে যে আমাদের ক্ষেত্রে এই ফাইলটির জন্য আপনার লেখার অনুমতি সর্বদা নাও থাকতে পারে। spark-submitকলের মধ্যে কনফিগারেশনটি সেট করার সময় একটি বিকল্প, অন্য বিকল্প (যখন সুতা / ক্লাস্টার মোডে চলতে থাকে) SPARK_CONF_DIRপরিবেশের পরিবর্তনশীলকে অন্য কনফিগারেশন স্ক্রিপ্টের দিকে নির্দেশ করতে হয়। সেখানে আপনি আপনার পিওয়াইএসপিআরক_পায়থন এবং আপনার প্রয়োজন হতে পারে অন্য কোনও বিকল্প সেট করতে পারেন। একটি টেম্পলেট গিথুবের স্পার্ক-env.sh উত্স কোডে পাওয়া যাবে ।


0

আমার ক্ষেত্রে (উবুন্টু 18.04), আমি টার্মিনালে এই কোডটি চালিয়েছি:

sudo vim ~/.bashrc

এবং তারপরে SPARK_HOMEনিম্নরূপে সম্পাদিত :

export SPARK_HOME=/home/muser/programs/anaconda2019/lib/python3.7/site-packages/pyspark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

এটি করার মাধ্যমে, আমি প্যাকেজটিতে ইনস্টল করা প্যাকেজটি SPARK_HOMEউল্লেখ করবpysparksite-package

কিভাবে ব্যবহার করতে হয় শিখতে vim, এখানে যান এই লিঙ্কে ক্লিক করুন।


0

চালান:

ls -l /usr/local/bin/python*

এই উদাহরণের প্রথম সারিতে পাইথন 3 সিমিলিংক দেখায়। এটি ডিফল্ট অজগর syMLink হিসাবে সেট করতে নিম্নলিখিত রান করুন:

ln -s -f /usr/local/bin/python3 /usr/local/bin/python

তারপরে আপনার শেলটি পুনরায় লোড করুন।


0

আমার একই সমস্যা ছিল, কেবল আমার ভার্চুয়াল পরিবেশটি সক্রিয় করতে ভুলে গেছি। যার যার মানসিক শূন্যতা ছিল সেখান থেকে।


0

আপনি যদি ম্যাকটিতে কাজ করছেন তবে নীচের কমান্ডগুলি ব্যবহার করুন

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

আপনি যদি অন্য কোনও ওএস ব্যবহার করে থাকেন তবে নীচের লিঙ্কটি পরীক্ষা করুন: https://github.com/GalvanizeDataS ज्ञान/ spark-install

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.