2017-01-25 1 views
1
hadoop jar cc-jar-with-dependencies.jar com.coupang.pz.cc.merge.Merge_Run \ 
    ${IDF_OUT}\ 
    ${IG_OUT}\ 
    ${PROB_OUT}\ 
    ${MERGE_OUT}\ 
    1.00 \ 
    0.000001 \ 
    0.0001 \ 

Существует часть кода оболочки, и я знаю, что hadoop будет запускать cc-jar-with-dependencies.jar на hdfs. Но каковы значения других параметров ниже со второй строки. Являются ли они параметрами, необходимыми для пакета банкоматов? $ {...} - путь по hdfs, например $ {IDF_OUT} и т. Д.Каковы параметры использования здесь в коде оболочки?

+0

Что вы можете задать здесь? Можете ли вы объяснить свою проблему немного больше? – Inian

ответ

1

Использование {WORD} является основной случай Paramter Expansion в bash, оболочки

$ ПАРАМЕТР

$ {ПАРАМЕТР}

Самый простой формой является просто использовать имя параметра в фигурные скобки , Это идентично использованию $ FOO, как вы его видите повсюду, но имеет то преимущество, что за ним сразу могут следовать символы, которые иначе интерпретируются как часть имени параметра.

с примером,

word="car" 
echo "The plural of $word is most likely $words" 
echo "The plural of $word is most likely ${word}s" 

производит выходной сигнал, как,

The plural of car is most likely 
The plural of car is most likely cars 

См первая строка, не содержащая cars, как и ожидалось, так как оболочка была в состоянии интерпретировать только ${word} и не $words.

Возвращаясь к вашему примеру,

hadoop jar cc-jar-with-dependencies.jar com.coupang.pz.cc.merge.Merge_Run \ 
    ${IDF_OUT}\ 
    ${IG_OUT}\ 
    ${PROB_OUT}\ 
    ${MERGE_OUT}\ 
    1.00 \ 
    0.000001 \ 
    0.0001 \ 

Со второй линии на палатах, переменные ${IDF_OUT}, ${IG_OUT}, ${PROB_OUT} и ${MERGE_OUT} все в вероятности некоторые переменные (может быть переменными окружения в hadoop файловой системы), который будет расширяться до значений при выполнении команды.

Пока я объяснил, что такое синтаксисы ${WORD}, фактические цели вышеуказанных переменных не совсем уместны в контексте shell.

1

Эти параметры передаются команде hadoop, поэтому вам нужно будет прочитать документацию для этой команды.

Однако вам может быть интересно узнать значения, содержащиеся в этих параметрах, когда запускается ваш скрипт. Вы можете сделать это мой модификации кода, как показано ниже:

echo >&2 \ 
hadoop jar cc-jar-with-dependencies.jar com.coupang.pz.cc.merge.Merge_Run \ 
    ${IDF_OUT}\ 
    ${IG_OUT}\ 
    ${PROB_OUT}\ 
    ${MERGE_OUT}\ 
    1.00 \ 
    0.000001 \ 
    0.0001 \ 

Это изменение приведет всю команду, которая будет напечатана, а не выполняется, в то время как >&2 причины стандартный выход для вывода на стандартной ошибки (которые могут помочь получать данные, напечатанные на терминал, если происходит некоторый захват вывода). Обратите внимание, что это изменение предназначено только для отладки/любопытства, это заставит ваш скрипт пропустить выполнение команды.

Если вы знаете значения, вся команда, вероятно, будет легче понять.