2015-01-25 2 views
3

데이터 가용성을 기반으로 워크 플로를 예약하려고하지만 특정 데이터 도착 빈도는 없습니다. 또한 여러 번 데이터가 재실행 될 수 있으므로 언제든지 도착할 수있는 날짜의 여러 버전이있을 수 있습니다.비동기 데이터 세트가 포함 된 Oozie 코디네이터

필자가 사양에서 알 수 있듯이 현재 코디네이터에서 빈도 매개 변수를 지정해야합니다.

그러나 우리는 주파수에 의존하지 않고 일부 이벤트 (데이터 도착 또는 파티션 생성)를 기반으로 워크 플로를 트리거하려고합니다.

비동기 데이터 세트에 해당하는 것으로 보입니다. Oozie는 비동기 데이터 세트를 아직 지원합니까?

+0

해결 했습니까? 나는 비슷한 요구 사항을 가지고있다. 감사합니다 –

답변

0

주파수 매개 변수는 필수입니다,하지만 당신은이 같은 입력 이벤트, 뭔가 지정할 수 있습니다

<datasets> 
    <dataset name="mydata" frequency="${coord:days(1)}" initial-instance="${initial_instance}" timezone="UTC"> 
     <uri-template>${hcat_uri}/${hcatDatabase}/${hcatTable}/dt=${YEAR}${MONTH}${DAY}</uri-template> 
    </dataset> 
</datasets> 
<input-events> 
    <data-in name="MYDATA_IN" dataset="mydata"> 
     <instance>${coord:current(0)}</instance> 
    </data-in> 
</input-events> 

https://oozie.apache.org/docs/3.1.3-incubating/CoordinatorFunctionalSpec.html#a6.1.4._Input_Events

그래서 상대적으로 낮은 주파수와 의미 단위를 정의하고는 기다립니다 데이터 가용성.

<timeout>[TIME_PERIOD]</timeout> 

또는 좌표 (시작) 할 수 있습니다 직접 워크 플로우 (코디네이터없이) 예와 : : 아마는 코디네이터에 대한 제한 시간을 지정하는 의미가있어, 어떤 주파수 이하의 cronjob에,하지만 그건에 좋은 아니에요 모든.

+0

답장을 보내 주셔서 감사합니다 kecso. 앞서 언급 한 것과 비슷한 방식으로 코디네이터를 입력 이벤트로 구성했습니다. 파티션 스키마 (value_date, id)가있는 HCat 테이블이 있습니다. "id"는 데이터 생성자가 제출 한 데이터의 식별자입니다. 그래서 코디네이터는 다음과 같이 id = xyz 인 데이터를 기다릴 수 있습니다 :'value_date = 2015-01-01; id = xyz' 이제는 잘됩니다. 또한 빈도가 1 일 이후로 다음 코디네이터 작업이 다음날 데이터 도착을 기다리고 있습니다 (2015-01-02). 그러나 2015-01-01의 파티션은 데이터 생성자가 언제든지 다시 만들 수 있습니다. –

+0

이상적으로 우리는 파티션 스키마에 또 다른 컬럼 "버전"을 추가하여 데이터 생성자가 제출 한 동일한 데이터 버전을 식별 할 수 있습니다. 'value_date = 2015-01-01; id = xyz; version =?'그러나 문제는 코디네이터가 어떤 버전을 기다릴지를 모른다는 것입니다. 데이터 생산자는 하루 동안 다음과 같은 방식으로 데이터를 제출할 수 있습니다. - 오후 7시에 id = xyz의 버전 v1 제출 - 오후 9시에 id = xyz의 버전 v2 제출 - 오후 9:30에 id = xyz의 버전 v3 제출 . 이벤트 중심 구현에서 코디네이터가이 모든 것을 처리하는 방법은 무엇입니까? –

+0

코디네이터없이 워크 플로 트리거를 직접 처리한다면 어떨까요? 또는 데이터 가용성을 확인하고 마커를 기반으로 처리를 호출하거나 워크 플로의 끝으로 이동하는 별도의 작업 (Fs 작업)을 만드시겠습니까? – kecso

관련 문제