如何用hadoop打印文件树?

mar*_*ark 7 linux shell command hadoop

我是HDFS和*nix中的新鸟,我只是好奇,如何在hadoop中打印文件树?

例如,我们可以在任何*nix系统中键入"tree",并给我们一个这样的结果:

[admin~]$tree
.
??? backup_snapshot.sh
??? project
?   ??? doc
?   ?   ??? README
?   ??? src
....
Run Code Online (Sandbox Code Playgroud)

这是非常清楚的输出,但由于HDFS不完全符合POSIX,所以我不知道如何在hadoop中打印它.

Lor*_*dig 15

基于http://en.wikipedia.org/wiki/Tree_(Unix),您可以想出一个像表示的树,例如:

hadoop fs -lsr /mydir | awk '{print $8}' | \
sed -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
Run Code Online (Sandbox Code Playgroud)

  • 这是不可思议的愚蠢,但我想在awk中这样做,所以我们走了:`hadoop fs -ls -R/mydir | awk'{print $ 8}'| awk -F /'{printf"| - "; for(i = 3; i <NF; i ++){printf" - "} print $ NF}'` (2认同)
  • 更新版本(避免弃用警告):`hdfs dfs -ls -R /mydir | awk '{print $8}' | sed -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'` (2认同)

Gre*_*Cat 0

从技术上讲,如果你真的想要这样做(虽然我不知道你为什么想要这样做,除了调试/可视化/娱乐目的),你可以使用熔断器将 HDFS 安装为普通文件系统- 有几种可用的实现。这将为您提供一个目录,您可以在其中运行您最喜欢的“树”可视化工具或您习惯使用普通文件系统的任何工具。