[英]Script works from shell but not Ruby
我有一個腳本,可以填寫多個火花提交作業的參數。 當我將它們復制並粘貼到shell中時,這些工作就可以工作,但是當我將字符串放入反引號並在Ruby中執行時,它們就會失敗。
spark-submit --master yarn-cluster \
--num-executors 2 \
--files ... \
--class ... \
-otherflags ...
Ruby返回
sh: 1: spark-submit: not found
即使spark-submit
在系統路徑中。 更令人困惑的是:
`spark-submit`
在Ruby中似乎可以正確調用shell命令。
考慮一下在shell中的命令行時和在Ruby中運行代碼時的不同之處。
外殼程序定義了PATH
,它在其中查找命令,最終希望找到所需的PATH
。
Ruby不會這樣做,而是需要定義可執行文件的絕對路徑。 這樣做的方法有很多種,但最簡單的方法是使用
where spark-submit
在命令行中,然后將其復制/粘貼到您的Ruby腳本中。 最有可能的結果是:
/usr/local/bin/spark-submit
要么
/path/to/rubys/gems/.../bin/spark-submit
spark-submit
在Ruby中似乎可以正確調用shell命令。
Ruby嘗試在當前目錄中查找命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.