2016-09-20 14 views
0

まず、SPARK_HOMEが設定されていると仮定します。私の場合は~/Desktop/spark-2.0.0です。基本的には、私はPyronスクリプトをCronjob(例えばcrontab -e)を使って実行したいと思っています。私の質問は、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 

を次のようにrun_example.shexample.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 

私のbashスクリプトは、ですが、私はcrontabを使用してrun_example.sh分ごとに実行したいです。しかし、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 

PATHの値を設定する最初のあなたの.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シェルを1行で走らせることはできませんでした! – titipata

関連する問題