Как использовать cat файл и подсчитать количество строк в файле с помощью пакета import scala .sys.process - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть имя файла в переменной scala. Я хотел бы передать переменную, чтобы cat файл и подсчитать количество строк. Я пытаюсь реализовать, используя scala .sys.process package.

val file = ("had oop fs -ls / user / landing / data" # | "sort -k6 , 7 "# |" tail -n1 "). !!. Trim file: String = -rw-r - r-- 3 pa_raviko5 hive 3093 2019-11-22 00:18 / пользователь / посадка / данные /file.csv

val file_path = file.split ("") .last.trim file_path: String = /user/landing/data/file.csv

scala> ** Seq ("has oop", "fs", "-cat", file_path, "|", "w c", "-l"). !! **** cat : |': No such file or directory cat: w c ': Нет такого файла или каталога cat: `-l': Нет такого файла или каталога java .lang.RuntimeException: Ненулевое значение выхода: 1 в scala .sys.package $. ошибка (пакет. scala: 27) в scala .sys.process.ProcessBuilderImpl $ AbstractBuilder.slurp (ProcessBuilderImpl. scala: 132) в scala .sys.process.ProcessBuilderImpl $ AbstractBuilder. $ bang $ bang (ProcessBuilderImpl. scala: 102) ... 53 исключено

1 Ответ

0 голосов
/ 24 февраля 2020

Вы не можете использовать оператор трубы | как часть вашего Seq(...).!!. Это оболочка, и scala не знает, что с ней делать. Вы можете назвать bash следующим образом:

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

Вы должны покинуть свой путь с помощью ", как показано выше. PS: при необходимости используйте scala соглашение об именах (filePath вместо file_path)

...