使用shell脚本在hdfs中查找文件是否存在

laximzn5  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(404)

我有一个 shell script 就像下面一样。此脚本打印位于中的文件的路径 HDFS ```

!/bin/bash

TIMESTAMP=date "+%Y-%m-%d"
path=/user/$USER/logs/${TIMESTAMP}.fail_log
path1=/user/$USER/logs/date -d "-1 days" '+%Y-%m-%d'.fail_log

echo filePath=$path
echo filePath1=$path1

在剧本里 `paths` 提供的是 `hdfs` 位置
在这个脚本中,我得到了文件路径。
现在我想知道这个文件是否真的存在 `HDFS` .
如果文件存在,则只打印文件路径,否则不执行任何操作。
我该怎么做?
hmae6n7t

hmae6n7t1#

你可以试试 -test 选择实现同样的目标。

hdfs dfs -test -[defszrw] HDFS_PATH
``` `-d` :如果路径是目录,则返回0。 `-e` :如果路径存在,则返回0。
从2.7.0开始 `-f` :如果路径是文件,则返回0。 `-s` :如果路径不为空,则返回0。 `-r` :如果路径存在并且已授予读取权限,则返回0。
从2.8.0开始 `-w` :如果路径存在并授予写入权限,则返回0。 `-z` :如果文件长度为零,则返回0。
例子:

if hdfs dfs -test -e $HDFS_PATH; then
echo "[$HDFS_PATH] exists on HDFS"
hdfs dfs -ls $HDFS_PATH
fi

参考文献:https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/filesystemshell.html#test

相关问题