簡體   English   中英

腳本可從Shell運行,但不能從Ruby運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM