如何使用import scala.sys.process包使用cat文件并计算文件中的行数

jxct1oxe  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(425)

我在scala变量中有一个文件名。我想把变量传递给cat文件并计算行数。我正在尝试使用scala.sys.process包实现。
val file=(“hadoop fs-ls/user/landing/data”#|“sort-k6,7”#|“tail-n1”)。!!。修剪文件:string=-rw-r--r--3 pa\u raviko5 hive 3093 2019-11-22 00:18/user/landing/data/file.csv
val file_path=file.split(“”).last.trim文件路径:string=/user/landing/data/file.csv
scala>**seq(“hadoop”,“fs”,“cat”,文件路径,“|”,“wc”,“l”)。!!****类别: |': No such file or directory cat: wc':无此类文件或目录cat:“-l”:无此类文件或目录java.lang.runtimeexception:scala.sys.package$.error(package)处的非零退出值:1。scala:27)在scala.sys.process.processbuilderimpl$abstractbuilder.slurp(processbuilderimpl。scala:132)在scala.sys.process.processbuilderimpl$abstractbuilder.$bang$bang(processbuilderimpl。scala:102) ... 53省略

o0lyfsai

o0lyfsai1#

不能使用管道运算符 | 作为你生活的一部分 Seq(...).!! . 这是贝壳的东西,斯卡拉不知道该怎么办。你可以这样称呼bash:

Seq("bash", "-c", s"""hadoop fs -cat "$file_path" | wc -l""").!!

你应该离开你的道路 " 如上图所示。ps:请在适当的地方使用scala的命名约定( filePath 而不是 file_path )

相关问题