2016-09-20 5 views
0

먼저 우리는 SPARK_HOME이 설치되어 있다고 가정합니다. 내 경우에는 ~/Desktop/spark-2.0.0입니다. 기본적으로 Cronjob (예 : crontab -e)을 사용하여 PySpark 스크립트를 실행하고 싶습니다. 내 질문은 Spark 스크립트가 Cronjob과 함께 작동하도록 환경 경로를 추가하는 방법입니다. 여기에 여기에Cronjob (crontab)을 사용하여 PySpark를 실행 중

rm test.txt 

~/Desktop/spark-2.0.0/bin/spark-submit \ 
    --master local[8] \ 
    --driver-memory 4g \ 
    --executor-memory 4g \ 
    example.py 

다음, 나는 crontab를 사용 run_example.sh 모든 분을 실행할로 run_example.sh에서 내 bash는 스크립트가 example.py

import os 
from pyspark import SparkConf, SparkContext 

# Configure the environment 
if 'SPARK_HOME' not in os.environ: 
    os.environ['SPARK_HOME'] = '~/Desktop/spark-2.0.0' 

conf = SparkConf().setAppName('example').setMaster('local[8]') 
sc = SparkContext(conf=conf) 

if __name__ == '__main__': 
    ls = range(100) 
    ls_rdd = sc.parallelize(ls, numSlices=10) 
    ls_out = ls_rdd.map(lambda x: x+1).collect() 

    f = open('test.txt', 'w') 
    for item in ls_out: 
     f.write("%s\n" % item) # save list to test.txt 

내 샘플 스크립트이다. 그러나 crontab -e을 실행할 때 사용자 지정 경로를 알 수 없습니다. 지금까지 나는 이것을 Gitbook link으로 만 봅니다. 내 코드를 아직 실행하지 않는 Cronjob 편집기에서 이와 비슷한 것을 가지고 있습니다.

#!/bin/bash 

# add path to cron (this line is the one I don't know) 
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$HOME/anaconda/bin 

# run script every minutes 
* * * * * source run_example.sh 

미리 감사드립니다.

답변

2

할 수있는 일은 집에있는 .bashrc 파일에 다음 행을 추가하는 것입니다.

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$HOME/anaconda/bin 

는 당신은

* * * * * source ~/.bashrc;sh run_example.sh 

경로 값을 설정합니다 먼저의 .bashrc 파일을 실행합니다이 줄은, 그때가 실행의 crontab에 다음 항목을 가질 수 run_example.sh

또는 run_example.sh에서만 PATH를 설정할 수 있습니다.

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$HOME/anaconda/bin 
rm test.txt 

~/Desktop/spark-2.0.0/bin/spark-submit \ 
    --master local[8] \ 
    --driver-memory 4g \ 
    --executor-memory 4g \ 
    example.py 
+0

감사합니다. @Sarwesh! 근본적으로,'source ~/.bashrc'가 내가 찾고있는 것이다. 나는 한 줄로 여러 개의 bash 쉘을 실행할 수 있다는 것을 전에 알지 못했습니다! – titipata

관련 문제