복붙노트

[HADOOP] 하둡 돼지 분석 기능을 주문한

HADOOP

하둡 돼지 분석 기능을 주문한

나는 돼지에 새로운 오전 SQL에서 가능한 것과 유사한 순서 분석 기능을 사용하고 싶습니다.

내 데이터는 다음과 같은 :

(stock_symbol,date,stock_price_open,stock_price_close)
(TAC,2001-08-06,16.39,16.36)
(TAC,2001-08-07,16.3,16.54)
(TAC,2001-08-08,16.55,16.44)
(TAC,2001-08-09,16.45,16.48)
(TAC,2001-08-10,16.5,15.8)

내가하고 싶은 매일 매일 주가를 여는 변화를 찾을 수 있습니다. 그래서, 내 출력은 다음과 같이 보일 것입니다 :

(stock_symbol,date,stock_price_open,stock_price_close,stock_price_change)
(TAC,2001-08-06,16.39,16.36,NULL)
(TAC,2001-08-07,16.3,16.54,-0.09)
(TAC,2001-08-08,16.55,16.44,0.25)
(TAC,2001-08-09,16.45,16.48,-0.1)
(TAC,2001-08-10,16.5,15.8,0.05)

나는 돼지 앞서 행 또는 현재 행 뒤에 볼 수 있어야합니다. 이 가능한가, 또는 돼지하지 이러한 유형의 분석을 허용 하는가?

해결법

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

    1.예상대로 출력을 얻기 위해 아래 스크립트를 사용할 수 있지만, 일부 미세한 튜닝이 필요할 수 있습니다.

    예상대로 출력을 얻기 위해 아래 스크립트를 사용할 수 있지만, 일부 미세한 튜닝이 필요할 수 있습니다.

    A = load '/tmp/pig/test/test' using PigStorage (',');
    B= foreach A generate $0 as stock_symbol, ToDate($1,'yyyy-mm-dd') as dt,(double)$2 as stock_price_open, (double)$3 as stock_price_close,'PT24H' as dthour;
    C= foreach B generate $0 as stock_symbol, $1 as dt_curr, SubtractDuration($1,$4) as dt_old, $2 as stock_price_open, $3 as stock_price_close;
    START = FILTER C BY ($1 == $1);
    D = JOIN C by $0 , START by $0;
    Filter_D = FILTER D by ((DaysBetween($1,$6)==1) and (DaysBetween($2,$7)==1));
    E = foreach Filter_D generate $0 as stock_symbol, $1 as dt, $3 as stock_price_open, $4 as stock_price_close, $3-$8 as stock_price_change;
    

    출력으로 :

    (TAC,2001-01-07T00:08:00.000-08:00,16.3,16.54,-0.08999999999999986)
    (TAC,2001-01-08T00:08:00.000-08:00,16.55,16.44,0.25)
    (TAC,2001-01-09T00:08:00.000-08:00,16.45,16.48,-0.10000000000000142)
    (TAC,2001-01-10T00:08:00.000-08:00,16.5,15.8,0.05000000000000071)
    

    우리가 한 일 이전 오프닝 날짜를 계산하기 위해 필요에 따라 그렇게 돼지에 24 시간을 정의 변수 "PT24H"을 가지고 있습니다. 같은 차이를 얻기 위해 가입하고 DaysBetween () 작용에 의해 follwed, TODATE () SubtractDuration ()를 사용하여 다음 작업을 인쇄했다.

    TODATE () SubtractDuration () DaysBetween ()는 UDF PIG에 inbilt 함수이고, U는보다 적절한 조치를 미세 조정 동일한 스크립트 적합 UDF를 작성할 수있다.

  2. from https://stackoverflow.com/questions/31730249/hadoop-pig-ordered-analytical-functions by cc-by-sa and MIT license