溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么使用Shell腳本判斷HDFS文件/目錄是否存在

發(fā)布時間:2021-07-29 19:41:40 來源:億速云 閱讀:2616 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“怎么使用Shell腳本判斷HDFS文件/目錄是否存在”,在日常操作中,相信很多人在怎么使用Shell腳本判斷HDFS文件/目錄是否存在問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用Shell腳本判斷HDFS文件/目錄是否存在”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1     文檔編寫目的

本文主要講述如何使用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é)

2     測試原理

通過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  #判斷路徑(文件或者目錄)是否存在

3     Shell腳本測試

3.1  測試路徑是否存在

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

怎么使用Shell腳本判斷HDFS文件/目錄是否存在

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é)果

怎么使用Shell腳本判斷HDFS文件/目錄是否存在

3.2 測試目錄是否存在

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é)果

怎么使用Shell腳本判斷HDFS文件/目錄是否存在

3.3 測試文件是否存在

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é)果

怎么使用Shell腳本判斷HDFS文件/目錄是否存在

4     總結(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>

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI