關於檢視HDFS上的檔案,檔案目錄,檔案是否為空的命令總結
阿新 • • 發佈:2019-01-09
今天做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_tableif [ $? -eq 0 ] ;then echo '檔案目錄已經存在,執行增量匯入' ./increment.sh else echo '檔案目錄不存在,執行全量匯入操作' ./import_loan_base.sh fi
參考內容連結如下;
https://blog.csdn.net/b6ecl1k7bs8o/article/details/80479800