[win下pycharm运行spark]IOExcepti…
·
最近一直在钻研IDE直连spark的问题。
用vmware建了3个虚拟机,来跑spark集群。安装的python版本是anaconda2的python2
在使用pycharm编写pyspark程序连接虚拟机的时候,
出现了这样的问题:
17/02/23 16:58:52 WARN TaskSetManager: Lost task 1.0 in stage 0.0 (TID 1, hadoop): java.io.IOException: Cannot run program "python": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at org.apache.spark.api.python.PythonWorkerFactory.startDaemon(PythonWorkerFactory.scala:161)
at org.apache.spark.api.python.PythonWorkerFactory.createThroughDaemon(PythonWorkerFactory.scala:87)
at org.apache.spark.api.python.PythonWorkerFactory.create(PythonWorkerFactory.scala:63)
at org.apache.spark.SparkEnv.createPythonWorker(SparkEnv.scala:134)
at org.apache.spark.api.python.PythonRunner.compute(PythonRDD.scala:101)
at org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:70)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:270)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
at org.apache.spark.scheduler.Task.run(Task.scala:89)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:227)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.(UNIXProcess.java:247)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 14 more
而跑spark单机模式的时候没有这个问题。
联想到之前spark有个非常不智能的设定,就是你在/etc/profile里面设置好java环境变量后,hadoop能用,但是spark提示找不到java。上网一查发现原来spark非得在conf/spark-env.sh里面再设置一遍环境变量。会不会这回找不到python也是这个问题呢?因为我直接在命令行输入python是能找到python并进入其命令行模式的。
可是,进spark-env.sh看了以后,发觉我已经设置了这2个环境变量:
JAVA_HOME=/home/hadoop/jdk1.8.0_112
PYTHON_HOME=/home/hadoop/anaconda2
最后想,难不成PATH参数都得给它设置一遍?给spark集群中每台机子的spark-env.sh加上如下
PATH=$PYTHON_HOME/bin:$PATH
然后……它就能用了,不报错了……看来还真的给它单独设置一遍环境变量……
更多推荐
所有评论(0)