hadoop fs-ls只存储文件的路径

8ehkhllq  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(703)

我正在查看一个hadoop文件系统。用命令 hadoop fs -ls /path/to/dir1* 我会浏览每一个以 dir1 并归还他们的档案
输出类似于

Found 1 items
-rw-r--r-- 3 sys_blah_blah  moredate /path/to/dir10/file1.py
Found 1 items
-rw-r--r-- 3 sys_blah_blah  moredate /path/to/dir10/file2.py
Found 1 items
-rw-r--r-- 3 sys_blah_blah  moredate /path/to/dir10/file3.py
Found 1 items
-rw-r--r-- 3 sys_blah_blah  moredate /path/to/dir11/file1.py
Found 1 items
-rw-r--r-- 3 sys_blah_blah  moredate /path/to/dir11/file2.py
...

我唯一感兴趣的信息是文件路径部分。如何仅将路径存储到另一个文件中?理想情况下,我希望一个文件的输出只有该文件中的路径。
最初,我考虑运行命令并将其输出存储到一个文件中,然后解析新文件,用regex获取路径并将其放入一个新文件中,但这似乎没有必要。

xu3bshqb

xu3bshqb1#

你可以利用 grep 从那以后 hadoop fs -ls 几乎没有提供任何有用的选择。

hadoop fs -ls /path/to/dir1* | grep -oE "/(.*/)?" > outFile.dat

如果每个路径只需要一个条目,只需将其传递给 uniq . 如:

hadoop fs -ls /path/to/dir1* | grep -oE "/(.*/)?" | uniq > outFile.dat

看起来很简单。

lsmd5eda

lsmd5eda2#

hadoop文件系统api(org.apache.hadoop.fs)可用于从java(任何其他兼容语言)检索hdfs数据,并可执行后续操作(regex)。
http://hadoop.apache.org/docs/stable/api/

nle07wnf

nle07wnf3#

我不太明白你的问题,但诸如此类的事情应该让你开始

while read prot digit user group fn; do
   echo $(dirname "$fn")
done < <(hadoop fs -ls /path/to/dir1*)

相关问题