0
首先,我假設我們已經設置了SPARK_HOME
,在我的情況下它是~/Desktop/spark-2.0.0
。基本上,我想使用Cronjob運行我的PySpark腳本(例如crontab -e
)。我的問題是如何添加環境路徑使Spark腳本與Cronjob一起工作。這裏是我的示例腳本,example.py
使用Cronjob運行PySpark(crontab)
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
在run_example.sh
我的bash腳本如下
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
每分鐘。但是,當我運行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
在此先感謝!
非常感謝@Sarwesh!基本上,'source〜/ .bashrc'就是我正在尋找的東西。我之前並不知道我們可以在一行中運行多個bash shell! – titipata