복붙노트

[HADOOP] 돼지를 사용하여 날짜 형식의 파일을로드

HADOOP

돼지를 사용하여 날짜 형식의 파일을로드

나는 다음과 같은 방법으로 데이터 집합을 가지고있다.

ravi,savings,avinash,2,char,33,F,22,44,12,13,33,44,22,11,10,22,2006-01-23
avinash,current,sandeep,3,char,44,M,33,11,10,12,33,22,39,12,23,19,2001-02-12
supreeth,savings,prabhash,4,char,55,F,22,12,23,12,44,56,7,88,34,23,1995-03-11
lavi,current,nirmesh,5,char,33,M,11,10,33,34,56,78,54,23,445,66,1999-06-15
Venkat,savings,bunny,6,char,11,F,99,12,34,55,33,23,45,66,23,23,2016-05-18

마지막 열 (예 : 2006년 1월 23일는) 날짜입니다. 나는 다음 명령 돼지를 사용으로 위의 데이터를로드하려합니다. 다음은 내가 파일을로드하기 위해 사용하고있는 코드입니다.

file = LOAD 'FI_USER_CREDS_TBL_T.txt' 
       USING PigStorage(',') AS (USER_ID:chararray,
                                 ROLE_ID:chararray,
                                 USER_PW:chararray,
                                 NUM_PWD_HISTORY:int,
                                 PWD_HISTORY:chararray,                                     
                                 PWD_LAST_MOD_TIME:int,
                                 NUM_PWD_ATTEMPTS:int,
                                 NEW_USER_FLG:chararray,
                                 LOGIN_TIME_LOW:int,
                                 LOGIN_TIME_HIGH:int,
                                 DISABLED_FROM_DATE:int,
                                 DISABLED_UPTO_DATE:int,
                                 PW_EXPY_DATE:int,
                                 ACCT_EXPY_DATE:int,
                                 ACCT_INACTIVE_DAYS:int,                                     
                                 LAST_ACCESS_TIME:int,
                                 TS_CNT:int,
                                 DTL__CAPXTIMESTAMP:int,
                                 ETL_INSERT_DATE:datetime);

그러나 대신이 덤프 파일 명령을 사용한 후 다음과 같은 출력을주고있다 날짜 열을 읽는되지 않습니다.

(ravi,savings,avinash,2,char,33,,22,44,12,13,33,44,22,11,10,22,,)
(avinash,current,sandeep,3,char,44,,33,11,10,12,33,22,39,12,23,19,,)
(supreeth,savings,prabhash,4,char,55,,22,12,23,12,44,56,7,88,34,23,,)
(lavi,current,nirmesh,5,char,33,,11,10,33,34,56,78,54,23,445,66,,)
(Venkat,savings,bunny,6,char,11,,99,12,34,55,33,23,45,66,23,23,,)

내가 어떻게 날짜 열을 읽을 수 있습니다.

친절이 점에서 나에게 도움이됩니다.

감사합니다.

해결법

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

    1.로드 chararray 같은 날짜와 다음은 날짜 형식으로 변환

    로드 chararray 같은 날짜와 다음은 날짜 형식으로 변환

    처럼:

    파일 2 = FOREACH 파일 날짜로 TODATE (일자, "일 / 월 / 년 ')를 생성 ....

    참조를 위해이 링크를 시도하십시오, http://pig.apache.org/docs/r0.11.0/api/org/apache/pig/builtin/ToDate.html 또는 http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

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

    2.S. cararare로드 데이터를 포함한다.

    S. cararare로드 데이터를 포함한다.

    chararray, ROLE_ID : chararray, USER_PW : chararray, NUM_PWD_HISTORY : INT, PWD_HISTORY : chararray, PWD_LAST_MOD_TIME : INT, NUM_PWD_ATTEMPTS (USER_ID AS 파일 LOAD = 'FI_USER_CREDS_TBL_T.txt'를 이용 PigStorage ( '') INT, NEW_USER_FLG : chararray, LOGIN_TIME_LOW : INT, LOGIN_TIME_HIGH : INT는 DISABLED_FROM_DATE : INT, DISABLED_UPTO_DATE : INT, PW_EXPY_DATE : INT, ACCT_EXPY_DATE : INT는 ACCT_INACTIVE_DAYS : INT, LAST_ACCESS_TIME : INT, TS_CNT : INT, DTL__CAPXTIMESTAMP : INT, ETL_INSERT_DATE : chararray);

    --ToDate 내장 기능이 날짜로 변환하는 데 사용되는 형식을 지정해야

    파일 2 = FOREACH 파일 USER_ID, ROLE_ID, USER_PW, NUM_PWD_HISTORY, PWD_HISTORY, PWD_LAST_MOD_TIME, NUM_PWD_ATTEMPTS, NEW_USER_FLG, LOGIN_TIME_LOW, LOGIN_TIME_HIGH, DISABLED_FROM_DATE, DISABLED_UPTO_DATE, PW_EXPY_DATE, ACCT_EXPY_DATE, ACCT_INACTIVE_DAYS, LAST_ACCESS_TIME, TS_CNT, DTL__CAPXTIMESTAMP, TODATE (ETL_INSERT_DATE 'YYYY-MM-생성 ETL_INSERT_DATE AS DD ');

    파일 2를 설명; 파일 2 덤프;

  3. from https://stackoverflow.com/questions/35767273/loading-datetime-format-files-using-pig by cc-by-sa and MIT license