关于查看HDFS上的文件,文件目录,文件是否为空的命令总结 - gxg123

时间:2024-04-17 16:42:02

关于查看HDFS上的文件,文件目录,文件是否为空的命令总结

今天做sqoop的增量导入操作,但是在第一次执行的时候,数据是全量的,后面数据就是按照增量的方式对数据进行导入操作。不想手动的去操作shell命令,就对

是否是全量导入还是变量导入做了一个判断操作但是使用下面的shell命令好像不管用

test -e study && echo "exist!" || echo "not exist!"

最终的解决办法是将采用HDFS自己的命令去判断文件是够存在命令如下:
首先来看一下HDFS的命令行
 hadoop fs -help

-test -[defsz] <path> :
Answer various questions about <path>, with result via exit status.
-d return 0 if <path> is a directory.
-e return 0 if <path> exists.
-f return 0 if <path> is a file.
-s return 0 if file <path> is greater than zero bytes in size.
-z return 0 if file <path> is zero bytes in size, else return 1.

这里明明白白的写着我们执行命令文件的返回值:

从上面的输出可以看出,我们可以使用test命令来判断某个文件是否存在。如果文件存在,这个命令将返回0;反之则返回1。

[root@VM200-12 log]# hadoop fs -test -f /user/hive/warehouse/test.db/increat_table/*
[root@VM200-12 log]# echo $?
0   -----文件存在则显示为0
下面是我的代码,当全量导入之后文件夹存在,这个时候文件夹存在则进行增量导入。反之

hadoop fs -test -d /user/hive/warehouse/test.db/increat_table if [ $? -eq 0 ] ;then echo \'文件目录已经存在,执行增量导入\' ./increment.sh else echo \'文件目录不存在,执行全量导入操作\' ./import_loan_base.sh fi

 

参考内容链接如下;

https://blog.****.net/b6ecl1k7bs8o/article/details/80479800