2014-10-22 9 views
11

मैं HDFS में निर्देशिका संरचना निम्न हो रहा है, जांच की जा रही है, तो HDFS में निर्देशिका पहले से मौजूद है या नहीं

/analysis/alertData/logs/YEAR/MONTH/DATE/HOURS 

डेटा है houly आधार पर आ रहा है और वर्ष/माह/दिन/घंटे के प्रारूप में संग्रहीत किया जाता है यही कारण है कि।

मैं एक खोल स्क्रिप्ट है, जिसमें मैं जब तक

"/analysis/alertData/logs" (this will vary depending on what product of data i am handling) 

पथ गुजर रहा तो खोल स्क्रिप्ट वर्ष/माह/तारीख/घंटा फ़ोल्डरों के माध्यम से जाने के लिए और सबसे नवीनतम पथ लौट लिखा है।

उदाहरण के लिए:

Directories present in HDFS has following structure: 

/analysis/alertData/logs/2014/10/22/01 
/analysis/alertData/logs/2013/5/14/04 

shell script is given path till : " /analysis/alertData/logs " 

it outputs most recent directory : /analysis/alertData/logs/2014/10/22/01 

मेरा प्रश्न यहाँ है मैं कैसे मान्य है कि क्या HDFS निर्देशिका पथ शेल स्क्रिप्ट वैध है या नहीं पारित कर सकते हैं। आइए कहें कि मैं एक गलत पथ को इनपुट या पथ के रूप में पास करता हूं जो अस्तित्व में नहीं है, इसलिए इसे खोल स्क्रिप्ट में कैसे संभालना है।

नमूना गलत रास्ता हो सकता है:

wrong path : /analysis/alertData (correct path : /analysis/alertData/logs/) 
    wrong path : /abc/xyz/ (path does not exit in HDFS) 

मैं Hadoop dfs -Test -z/-d/-e विकल्प मेरे लिए काम किया नहीं था उपयोग करने की कोशिश। इसके लिए कोई सुझाव।

नोट: मेरी मूल कोड यहां पोस्ट नहीं कर रहा है, क्योंकि मेरी समस्या का हल इस पर निर्भर नहीं है।

अग्रिम धन्यवाद।

उत्तर

3

हाय मैंने एचडीएफएस निर्देशिका का परीक्षण करने के लिए निम्नलिखित स्क्रिप्ट का उपयोग किया है या नहीं। मैंने आपके प्रश्न में देखा है कि आपने इस परीक्षण आदेश की कोशिश की और काम नहीं किया। आप .. क्यों काम कर रहे इस नहीं पर किसी भी ट्रेस प्रदान करें

hadoop fs -test -d $dirpath 
    if [ $? != 0 ] 
      then 
       hadoop fs -mkdir $dirpath 
       else 
        echo "Directory already present in HDFS" 
    fi 
7

वापसी 0 के बाद से

hadoop fs -test -d $yourdir 

, अगर मौजूद है तो w/ओ परीक्षण आदेश []

if [$? == 0]; then 
    echo "exists" 
else 
    echo "not exists" 
fi 
16

आज़मा सकते हैं:

if $(hadoop fs -test -d $yourdir) ; then echo "ok";else echo "not ok"; fi 
2

हैडोप एफएसको हटा दिया गया हैउपयोग: hdfs dfs -test - [ezd] URI

विकल्प: -e विकल्प यह देखने के लिए जांच करेगा कि फ़ाइल मौजूद है या नहीं, 0 सही होने पर। -z विकल्प यह देखने के लिए जांच करेगा कि फ़ाइल शून्य लंबाई है या नहीं, 0 सही होने पर। -d विकल्प यह देखने के लिए जांच करेगा कि पथ निर्देशिका है या नहीं, 0 सही होने पर। उदाहरण: HDFS DFS -Test -d $ yourdir

कृपया जांच करें अधिक जानकारी के लिए निम्नलिखित: https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/FileSystemShell.html सादर

0

जावा में हम FileSystem वर्ग का उपयोग करके यह सत्यापित कर सकते हैं।

FileSystem

संबंधित मुद्दे