다음과 같은 몇 가지 명령을 저장하는 파일이 있습니다.
sudo PYSPARK_DRIVER_PYTHON=/bin/python2.7 PYSPARK_PYTHON=/bin/python2.7 SPARK_CONF_DIR=/configuration/spark2 /spark2.1/bin/spark-submit --driver-memory 2g --executor-memory 4g --num-executors 100 --jars /lib/json-serde-1.3.7-jar-with-dependencies.jar
위 명령은 파일 이름(예:)이 추가된 경우에만 실행됩니다 file.py
. 따라서 명령줄에서 이것을 실행하려면 다음을 입력합니다.
sudo PYSPARK_DRIVER_PYTHON=/bin/python2.7 PYSPARK_PYTHON=/bin/python2.7 SPARK_CONF_DIR=/configuration/spark2 /spark2.1/bin/spark-submit --driver-memory 2g --executor-memory 4g --num-executors 100 --jars /lib/json-serde-1.3.7-jar-with-dependencies.jar file.py
그런데 이 명령을 사용하여 일부 파일을 실행하고 싶고, 실행할 때마다 파일 이름을 지정하고 싶습니다. 이 명령을 라는 파일에 저장하려고 시도했고 command
실행했습니다.
cat command echo file.py | bash
하지만 작동하지 않는 것 같습니다. 어떻게 진행해야 하나요?
답변1
스크립트에서 변수를 설정하고 빠른 상태 검사를 수행하세요.
pyfile="file.py"
sudo PYSPARK_DRIVER_PYTHON=/bin/python2.7 PYSPARK_PYTHON=/bin/python2.7 SPARK_CONF_DIR=/configuration/spark2 /spark2.1/bin/spark-submit --driver-memory 2g --executor-memory 4g --num-executors 100 --jars /lib/json-serde-1.3.7-jar-with-dependencies.jar "${pyfile?python script not specified}"
변수가 정의되지 않았거나 비어 있으면 생성자는 ${var?message}
오류를 발생시키고 표시합니다.message
var
를 사용하여 기본값을 제공할 수도 있습니다 ${var-defaultvalue}
.
더 간단한 호출 기능으로 설정할 수도 있습니다.
runjob() {
sudo PYSPARK_DRIVER_PYTHON=/bin/python2.7 PYSPARK_PYTHON=/bin/python2.7 SPARK_CONF_DIR=/configuration/spark2 /spark2.1/bin/spark-submit --driver-memory 2g --executor-memory 4g --num-executors 100 --jars /lib/json-serde-1.3.7-jar-with-dependencies.jar "${1?python script not specified}"
}
runjob "/path/to/file.py"
runjob "/path/to/some/other/file.py"