关于查看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.csdn.net/b6ecl1k7bs8o/article/details/80479800