복붙노트

[HADOOP] Oozie 워크 플로우 EL 기능 타임 스탬프 () 초를 제공하지 않습니다

HADOOP

Oozie 워크 플로우 EL 기능 타임 스탬프 () 초를 제공하지 않습니다

나는 다음과 같은 Oozie 워크 플로우를 가지고 :

<workflow-app name="${workflow_name}" xmlns="uri:oozie:workflow:0.4">

    <global>
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <configuration>
            <property>
                <name>mapred.job.queue.name</name>
                <value>${launcherQueueName}</value>
            </property>
            <property>
                <name>mapred.queue.name</name>
                <value>${launcherQueueName}</value>
            </property>
        </configuration>
    </global>

    <start to="email-1" />

    <action name="email-1">
        <email xmlns="uri:oozie:email-action:0.1">
            <to>${toEmailList}</to>
            <cc>${ccEmailList}</cc>
            <subject>ts</subject>
            <body> 
                TIMESTAMP:  ${timestamp()}
            </body>
        </email>

        <ok to="mail-2" />
        <error to="kill-fail" />
    </action>

... 4 more actions for mail-2, mail-3 and mail-4

    <kill name="kill-fail">
        <message>${workflow_name} failed, error
            message[${wf:errorMessage(wf:lastErrorNode())}]
        </message>
    </kill>

    <end name="end" />
</workflow-app>

내가 같이 타임 스탬프 값을 얻는 이메일

TIMESTAMP:  2016-01-27T16:19Z

은 EL 정의에 따라, 이러한 형식이어야 (YYYY-MM-ISO 형식 : mm : ss.sZ

이유는 초을받지는 무엇입니까?

실제로 일을하려고하고 무엇을 : 나는이 네 가지 함수 호출이 항상 동일한 값 또는 다른 값을 반환하는 경우 알아 내려고 노력하고 있어요. 나는 변경하지 않는 뭔가가 필요 그래서 나를 위해 타임 스탬프 () 나던 작품은, 그때 코디네이터의 NominalTime / ActualTime EL의 기능을 고려할 경우.

우리는 타임 스탬프에 초를 취득하지 못할 경우, 그 1 분 이상의 시간 범위에서 실행할 수 있도록하기 위해 각 작업을 일시 중지하는 방법은 무엇입니까?

편집하다: 삼손 Scharfrichter 아래 답변 요약 :

1) 당사 타임 스탬프에는 초) (도 없다?

2) 나에게 초뿐만 아니라 줄 수있는 기능이 있습니까?

3) 어떻게 워크 플로우의 모든 작업에서 같은 시간 값을 사용 하는가?

4) 어떻게 워크 플로우에서 작업 일시 정지를 만드는 방법?

해결법

  1. ==============================

    1.V4.2에 대한 Oozie 문서를 인용

    V4.2에 대한 Oozie 문서를 인용

    그것은 당신이 무엇을 얻을 꽤 일관성을 보인다.

    원하는 경우 두 번째 아래로 nominalTime ()하지만, 코디네이터에 - 그러므로 당신은 워크 플로 스크립트에게 전달하기 위해 <구성> 특성에 결과를 물건을해야합니다 당신은 COORD를 포맷 할 수 있습니다.

    그리고 AFAIK의 COORD : 코디네이터는 다음 워크 플로 인스턴스에 대해 생각하기 시작했을 때 actualTime ()는 과거에 비 결정적 시간을 의미합니다. 나는 그것이 사용할 수 있습니다 무엇을 상상할 수 없다.

    그런데, 나는 "[당신이] 실제로 뭘 하려는지"하지 않는다; 당신이 원하는 모든 당신의 행동에 대한 고유 ID를 생성하는 경우, 당신은 Oozie 속도가 느린과 같은 초에 여러 작업을 실행하지 않을 것이라는 사실에 의존하지 않고 그것을 할 수있는 많은 방법이있다.

  2. from https://stackoverflow.com/questions/35047044/oozie-workflow-el-function-timestamp-does-not-give-seconds by cc-by-sa and MIT license