2014-10-22 2 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 проходят ли раскошеливаться скрипт действителен или нет. Допустим, я передаю неправильный путь в качестве входного или пути, которого нет, поэтому как обрабатывать это в скрипте оболочки.

Sample неправильный путь может быть:

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

Привет, Я использовал следующий скрипт для проверки каталога HDFS или нет. Я видел в вашем вопросе, что вы пробовали эту тестовую команду и не работали. Не могли бы вы предоставить никаких следов на то, почему это не работает ..

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

С

hadoop fs -test -d $yourdir 

возвращают 0, если существует, то

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

Try без команды тест []:

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

Hadoop fs устарел Использование: hdfs dfs -test - [ezd] URI

Опции: Опция -e проверяет, существует ли файл, возвращая 0, если true. Опция -z проверяет, является ли файл нулевой длиной, возвращая 0, если true. Параметр -d проверяет, является ли путь каталогом, возвращая 0, если true. Пример: HDFS ДФС -test -d $ YourDir

Пожалуйста, проверьте следующее для получения дополнительной информации: https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/FileSystemShell.html Привет

Смежные вопросы