我正在尝试列出aws s3中的文件夹,并仅从其中获取文件名。嵌套的unix命令未在Spark-shell中执行,并引发错误。我知道我们还有其他方法可以通过导入org.apache.hadoop.fs ._
我正在尝试的命令是:
import sys.process._
var cmd_exec = "aws s3 ls s3://<bucket-name>/<folder-name>/"
cmd_exec !!
如果我通过将cut命令嵌套到ls来执行它。抛出错误。
import sys.process._
var cmd_exec = "aws s3 ls s3://<bucket-name>/<folder-name>/ | cut -d' ' -f9-"
cmd_exec !!
错误消息:未知选项:|,cut,-d',',-f9-
java.lang.RuntimeException:非零退出值:255
有什么建议吗?
答案 0 :(得分:0)
这很自然。
import scala.sys.process._
val returnValue: Int = Process("cat mycsv.csv | grep -i Lazio")!
上面的代码也行不通...
|
是重定向操作符,用于执行另一个命令。所以代替那...
捕获输出并再执行一次。.
您也可以看到此article - A Scala shell script example .. scala程序可以作为shell脚本执行...可能很有用。
TIY!