您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么使用Shell腳本判斷HDFS文件/目錄是否存在”,在日常操作中,相信很多人在怎么使用Shell腳本判斷HDFS文件/目錄是否存在問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用Shell腳本判斷HDFS文件/目錄是否存在”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
本文主要講述如何使用Shell腳本判斷HDFS文件或目錄是否存在,算是一個小技巧吧,這幾天做PoC的時候感覺還挺有用的。因為HDFS設(shè)計的是“一次寫入,多次讀取”,不可以修改數(shù)據(jù),只能追加或者刪除,所以,如果目標文件或目錄在HDFS上已經(jīng)存在的話,則無法創(chuàng)建成功。
測試環(huán)境:
操作系統(tǒng)版本為Redhat7.2
CM和CDH版本為5.11.2
文章目錄結(jié)構(gòu):
1. 文檔編寫目的
2. 測試原理
3. Shell腳本測試
3.1 測試路徑是否存在
3.2 測試目錄是否存在
3.3 測試文件是否存在
4. 總結(jié)
通過hadoop fs -test來判斷文件或者目錄是否存在,一次只能傳遞一個測試參數(shù)。
Usage: hadoop fs -test -[defsz] URI -test: Only one test flag is allowed Options: -d: if the path is a directory, return 0. -e: if the path exists, return 0. -f: if the path is a file, return 0. -s: if the path is not empty, return 0. -z: if the file is zero length, return 0. |
比如判斷HDFS上的某個文件目錄是否存在,可以執(zhí)行如下命令:
hadoopfs -test -d $path #判斷目錄是否存在
hadoopfs -test -e $path #判斷路徑(文件或者目錄)是否存在
1、準備測試目錄,包含一個文件和一個文件夾
[root@bigdata60 ~]# hadoop fs -ls /user/wdtest Found 2 items drwxr-xr-x - fusionuser wdtest 0 2018-07-03 13:26 /user/wdtest/.fusion -rw-r--r-- 3 fusionuser wdtest 908 2018-07-06 22:37 /user/wdtest/hosts |
2、編寫測試腳本如下:
#!/bin/sh
path=$1
hadoop fs -test -e $path if [ $? -eq 0 ]; then echo "Path is exist!" else echo "Path is not exist!" fi |
3、執(zhí)行“./etest.sh /user/wdtest”命令,運行測試腳本,驗證輸出結(jié)果
1、編寫測試腳本如下:
#!/bin/sh
path=$1
hadoop fs -test -d $path if [ $? -eq 0 ]; then echo "Directory is exist!" else echo "Directory is not exist!" fi |
2、分別執(zhí)行“./dtest.sh /user/wdtest”命令和“./dtest.sh /user/wdtest/aa”命令,運行測試腳本,驗證輸出結(jié)果
1、編寫測試腳本如下:
#!/bin/sh
path=$1
hadoop fs -test -f $path if [ $? -eq 0 ]; then echo "File is exist!" else echo "File is not exist!" fi |
2、分別執(zhí)行“./ftest.sh /user/wdtest/hosts”命令和“./dtest.sh /user/wdtest/host”命令,運行測試腳本,驗證輸出結(jié)果
1、通過hadoop fs -test -[defsz] URI 可以判斷HDFS文件或目錄是否存在,-test一次只能傳遞一個測試參數(shù),不能執(zhí)行類似 hadoop fs -test -dfURI或者hadoop fs -test -d -f URI這種命令;
2、hadoop fs -test -[defsz] URI 返回值是不輸出的,需要通過“$?”這個特殊變量獲取返回值;
3、-s和-z命令我測試過,但覺得不怎么常用,所以沒在文章中講述,有興趣可以自己測一下,比較簡單,更換一下腳本參數(shù)即可;
4、判斷HDFS文件目錄是否存在后,可以執(zhí)行比如創(chuàng)建、刪除目錄或文件等操作,當然還有一些更高級的玩法,這里就不演示了。
到此,關(guān)于“怎么使用Shell腳本判斷HDFS文件/目錄是否存在”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。