gpt4 book ai didi

scala - 如何使用导入scala.sys.process程序包使用cat文件并计算文件中的行数

转载 作者:行者123 更新时间:2023-12-02 22:02:04 25 4
gpt4 key购买 nike

我在scala变量中有一个文件名。我想传递变量来容纳文件并计算行数。我正在尝试使用scala.sys.process包实现。

val file =(“hadoop fs -ls / user / landing / data”#|“sort -k6,7”#|“tail -n1”)。!!。trim
文件:字符串= -rw-r--r-- 3 pa_raviko5 hive 3093 2019-11-22 00:18 /user/landing/data/file.csv

val file_path = file.split(“”).last.trim
file_path:字符串= /user/landing/data/file.csv

scala> ** Seq(“hadoop”,“fs”,“-cat”,file_path,“|”,“wc”,“-l”)。!! ****
cat:|': No such file or directory
cat:
wc':没有这样的文件或目录
cat:`-l':没有这样的文件或目录
java.lang.RuntimeException:非零退出值:1
在scala.sys.package $ .error(package.scala:27)
在scala.sys.process.ProcessBuilderImpl $ AbstractBuilder.slurp(ProcessBuilderImpl.scala:132)
在scala.sys.process.ProcessBuilderImpl $ AbstractBuilder。$ bang $ bang(ProcessBuilderImpl.scala:102)
... 53消失

最佳答案

您不能将管道运算符|用作Seq(...).!!的一部分。这是壳的事情,scala不知道该怎么做。您可以这样调用bash:

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

如上所示,您应该使用 "转义路径。
PS:请在适当的地方使用scala的命名约定( filePath而不是 file_path)

关于scala - 如何使用导入scala.sys.process程序包使用cat文件并计算文件中的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60374582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com