我在scala变量中有一个文件名。我想传递变量来容纳文件并计算行数。我正在尝试使用scala.sys.process包来实现。
val file =(“ hadoop fs -ls / user / landing / data”#|“ sort -k6,7”#|“ tail -n1”)。!!。trim文件:String = -rw-r--r-- 3 pa_raviko5 hive 3093 2019-11-22 00:18 /user/landing/data/file.csv
val file_path = file.split(“”).last.trimfile_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”“”)。!!。