2014-02-12 2 views
1

Я пытаюсь выполнить узел управления решения в oozie 3.3.2, но получение javax.servlet.jsp.el.ELExceptionМожем ли мы использовать параметры в узле решения oozie?

Обнаружены "{"

<decision name="decision-wf"> 
<switch> 
      <case to="another_wf"> 
       ${fs:fileSize(${OutputDir}/000000_0) gt 100 } 
      </case> 

      <default to="fail-wf"/> 
</switch> 

Как следует Я передаю параметр в формате String, поскольку вышеупомянутый метод FS ожидает ввода String?

ответ

3

Из document оказывается,

Вам необходимо пройти HARDCODED т.е. заключен в ' как в ${fs:fileSize('/usr/foo/myinputdir'/1000) gt 10 }

или

только имя параметра ${fs:fileSize(OutputDir/1000) gt 10 }

Это OutputDir может быть указан в <config> разделов рабочего процесса ИЛИ файл .properties ИЛИ переданный при t ime of the job using -D

+0

Я уже делаю это way.This пост на форуме [ссылка] (http://community.cloudera.com/t5/Web-UI-Hue-Beeswax/Oozie-wf-decision-node-is -this-how-to-pass-the-parameters-to/td-p/2091) предполагает, что он должен быть действительным. – Pratik

+0

можно ли аргументы для порогового значения, как показано ниже? Я попробовал это и не работал. $ {fs: fileSize ('/ user/mytable') lt "$ {ThresholdSize}"} – Ilango

+0

@Satha Я не уверен в этом, но вы можете попробовать без знака '' '? –

0

Да, вы можете. На самом деле вы можете комбинировать несколько параметров с функцией concat (что, я думаю, поможет с вопросом оригинального плаката).

Например, если $ {место} и $ {дата} являются два PARAMS определены в файле конфигурации:

<decision name="check-directory-exists"> 
    <switch> 
     <case to="load-directory"> 
      <!-- check if the directory at this location for this date exists --> 
      ${fs:exists(concat(location, date))} 
     </case> 
     <!-- The directory doesn't exist, there is nothing to do --> 
     <default to="end" /> 
    </switch> 
</decision> 

и если место и дата нужен «/» между ними, вы должны сделать это :

${fs:exists(concat(concat(location, "/"), date))} 
Смежные вопросы