복붙노트

[HADOOP] 나는 매개 변수로 하이브 서버 작업에서 동적 날짜를 전달할 수있는 방법

HADOOP

나는 매개 변수로 하이브 서버 작업에서 동적 날짜를 전달할 수있는 방법

Oozie에서, 나는 색조 하이브 조치를 사용하고, 동일한 작업 나는 날짜 매개 변수를 제공하는 매개 변수 옵션을 사용했다. 여기에는 어제 전에 어제 날짜와 같은 동적 날짜 매개 변수를 제공합니다. 어떻게 그 일을 생성 할 수 있습니까? 그리고 어떻게 매개 변수로 전달할 수 있습니다.

내 HQL은 다음과 같습니다

CREATE TABLE IF NOT EXISTS tmp_table as 
select * from emptable 
where day>=${fromdate}  and day<=${todate}

내 HiveServer 작업에는 다음이 포함됩니다 에이. HQL 스크립트 비. 두 개의 매개 변수 옵션과 같은 FROMDATE = TODATE = 각 날짜에 대해 하나 씨. HQL 스크립트에 대한 추가 파일 옵션.

내가 뭘하려합니다 : 나는 날짜를 반환 두 개의 별도의 쉘 스크립트를 만들었습니다. 쉘 스크립트 중 하나는

#! /bin/bash
FROM_DAY=$(date +%Y-%m-%d -d " - 1 day")
echo "$FROM_DAY" 

및 하이브 액션 매개 변수 FROMDATE = /user/manishs/Oozie/filter.sh 될

그러나이 방법은 작업 및 예외를 제공하지 않습니다 :  오류 : 오류 컴파일하는 동안 문 : 실패 : 4:11 표현 사양에 '/' '사용자' '/'근처 입력을 인식 할 수 ParseException가 선 (상태 = 42000 코드 = 40000)

참고 : 나는 같은 날짜 전달하는 경우 : FROMDATE = '2015년 8월 1일'을, 그것은 작업 및 결과를 제공한다.

내 질문은 내가 매개 변수로 하이브 서버 작업에서 동적 날짜를 전달할 수있는 방법이다. 또는 쿼리에 동적 필터를 통과 할 수있는 방법입니다.

해결법

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

    1.Oozie 오른쪽 스케줄러입니까? 그래서 왜 내장 EL 기능 "오늘"와 "어제"를 계산하고 하이브 조치에 전달할 사용하지?

    Oozie 오른쪽 스케줄러입니까? 그래서 왜 내장 EL 기능 "오늘"와 "어제"를 계산하고 하이브 조치에 전달할 사용하지?

    코디네이터 스크립트에서, 당신은 로스 앤젤레스 시간대를 사용하고 있다고 가정하면, 그것은처럼 보일 것입니다 ...

    <coordinator-app .......>
      <action>
        <app-path>/path/to/the/worklow/definition</app-path>
        <configuration>
          <property>
            <name>today</name>
            <value>${coord:formatTime(coord:dateTzOffset(coord:nominalTime(), "America/Los_Angeles"), 'yyyy-MM-dd')}</value>
          </property>
          <property>
            <name>yesterday</name>
            <value>${coord:formatTime(coord:dateOffset(coord:dateTzOffset(coord:nominalTime(), "America/Los_Angeles"), -1, 'DAY'), 'yyyy-MM-dd')}</value>
          </property>
        </configuration>
      </action>
    </coordinator-app>
    

    그런 다음 워크 플로 스크립트에서, 하이브에 속성을 전달하는 요소를 사용합니다.

    참조 : Oozie 코디네이터 문서

    OK, 아마 당신은 색조와 그렇게 할 수 없습니다. 하지만 색조 편집기 어쨌든 그것으로 많은 것을 할 수없는 많은 한계가있다.

  2. ==============================

    2.이 시도,

    이 시도,

    fromdate = $(sh /user/manishs/Oozie/filter.sh)
    

    filter.sh 주어진 장소에 있어야한다

  3. from https://stackoverflow.com/questions/32033005/how-can-i-pass-a-dynamic-date-in-a-hive-server-action-as-a-parameter by cc-by-sa and MIT license