1. 程式人生 > >關於檢視HDFS上的檔案,檔案目錄,檔案是否為空的命令總結

關於檢視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。

[[email protected]12 log]# hadoop fs -test -f /user/hive/warehouse/test.db/increat_table/*
[[email protected] 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