2014-12-03 4 views
1

내가 "yyyy-MM-dd HH:mm:ss"임팔라

내가에서 BigInt로 임팔라의 필드로 변환 할 수 있도록하려면 자바에서 yyyMMddHHmmss을 좋아한다 형식으로 타임 스탬프의 필드가 텍스트 파일을 읽고 있습니다위한에서 BigInt 자바 타임 스탬프 .

나는 ETL에 대한 Talend를 사용하고

하지만 이와 내가

답변

0

한 가지 분명한 옵션은을 읽어 내 tImpalaOutput 구성 요소에 적절한 변화를 갖고 싶어 "이 구성 요소에 대한 스키마의 DBTYPE이 올바르지 않습니다"이 오류가 날짜를 문자열로 지정하고 원하는 출력으로 포맷 한 다음 임팔라로 보내기 전에 오래 변환하십시오.

는 같은과 Talend의 parseDate 기능을 사용하여 시작하는 것이 이렇게하려면 다음을 수행

TalendDate.parseDate("yyyy-MM-dd HH:mm:ss",row1.date) 

이는 날짜 타입 객체에 날짜 문자열을 구문 분석합니다. 또는이와 함께 한 번에 수행 할 수 있습니다

TalendDate.formatDate("yyyMMddHHmmss",row2.date) 

: 여기에서 당신은 당신의 원하는 문자열 형식으로이를 변환 할 수 있습니다,이 후

TalendDate.formatDate("yyyMMddHHmmss",TalendDate.parseDate("yyyy-MM-dd HH:mm:ss",row1.date)) 

당신이 원하는 형식으로 날짜 문자열이 있어야합니다. 그런 다음 tConvertType 구성 요소 또는 다음과 같은 자바 코드를 사용하여 긴이 캐스팅 할 수 있습니다

Long.valueOf(row3.date) 

를 또는, 다시 한번 우리는 하나 라이너에 모든 일을 수행 할 수 있습니다 여기에서

Long.valueOf(TalendDate.formatDate("yyyMMddHHmmss",TalendDate.parseDate("yyyy-MM-dd HH:mm:ss",row1.date))) 

당신 임팔라 BIGINT 필드에 Java Long으로 임팔라에게 보낼 수 있어야합니다.

+0

감사합니다. 매우 도움이되었습니다. :) – user1189851

+0

안녕하세요 @ydaetskcoR : 나는 Long을 사용하려고했습니다. 불행히도 BIGINT는 자바 타입의 BIGDECIMAL에 매핑됩니다. 어떤 생각이 어떻게 해결할 수 있습니까? – user1189851

관련 문제