복붙노트

[HADOOP] 하이브 테이블의 컬럼과 같은 파일 이름의 일부

HADOOP

하이브 테이블의 컬럼과 같은 파일 이름의 일부

내 하이브 테이블의 열으로 내 이름의 첫 부분을 얻으려면

My filename is : 20151102114450.46400_Always_1446482638967.xml

나는 즉, 20151102114450 그것의 첫 번째 부분을 얻기 위해 마이크로 소프트 애저의 하이브에서 정규식을 사용하여 (쿼리 아래) 쿼리를 작성

내가 쿼리를 실행할 때하지만 20151102164358로 출력을 얻고있다

select CAST(regexp_replace(regexp_replace(regexp_replace(CAST(CAST(regexp_replace(split(INPUT__FILE__NAME,'[_]')[2],'.xml','') AS BIGINT) as TimeStamp),':',''),'-',''),' ','') AS BIGINT) as VERSION

내가 잘못 가고 무엇을 정정 할 필요가있는 사람이 말해 줄래?

해결법

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

    1.내가 잘하면 그것뿐만 아니라 푸른에서 작동합니다, 클라우 데라에서 이것을 시도했다.

    내가 잘하면 그것뿐만 아니라 푸른에서 작동합니다, 클라우 데라에서 이것을 시도했다.

    select from_unixtime(unix_timestamp(regexp_extract('20151102114450.46400_Always_1446482638967.xml','^(.*?)\\.'),'yyyyMMddHHmmss'),'yyyy-MMM-dd HH:mm:ss');
    
    2015-Nov-02 11:44:50
    Time taken: 19.644 seconds, Fetched: 1 row(s)
    

    또 다른 옵션 :

    select from_unixtime(unix_timestamp(split('20151102114450.46400_Always_1446482638967.xml','\\.')[0],'yyyyMMddHHmmss'),'yyyy-MMM-dd HH:mm:ss')
    
  2. from https://stackoverflow.com/questions/37331487/part-of-filename-as-a-column-in-hive-table by cc-by-sa and MIT license