无法在Spark Scala中执行嵌套的Unix命令

时间:2019-06-19 14:18:02

标签: scala amazon-s3

我正在尝试列出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

有什么建议吗?

1 个答案:

答案 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!