복붙노트

[HADOOP] Hive에서 datetime에 분을 추가하십시오.

HADOOP

Hive에서 datetime에 분을 추가하십시오.

Hive에 dat (DATEADD (datepart, number, date)와 비슷한 datetime에 분을 (int로) 추가하는 데 사용할 수있는 함수가 있는가?) 여기서 datepart는 분이 될 수 있습니다. DATEADD (분, 2, '2014-07-06 01:28:02')는 2014-07-06 01:28:02를 반환합니다. 반면, Hive의 date_add (문자열 startdate, int 일)는 일입니다. 그 중 몇 시간 동안?

해결법

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

    1.당신의 문제는 Hive Udf로 쉽게 해결할 수 있습니다.

    당신의 문제는 Hive Udf로 쉽게 해결할 수 있습니다.

    package HiveUDF;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.apache.hadoop.hive.ql.exec.UDF;
    
    public class addMinuteUdf extends UDF{
        final long ONE_MINUTE_IN_MILLIS=60000;
        private  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        public String evaluate(String t, int minute) throws ParseException{
            long time=formatter.parse(t.toString()).getTime();
            Date AddingMins=new Date(time + (minute * ONE_MINUTE_IN_MILLIS));
            String date = formatter.format(AddingMins);
            return date;
        }
    }
    

    AddMinuteUdf.jar을 만든 후 하이브에 등록하십시오.

    ADD JAR /home/Kishore/AddMinuteUdf.jar; 
    create temporary FUNCTION addMinute as 'HiveUDF.addMinuteUdf';
    
    
    hive> select date from ATable;
    OK
    2014-07-06 01:28:02
    Time taken: 0.108 seconds, Fetched: 1 row(s)
    

    기능 적용 후

    hive> select addMinuteUdf(date, 2) from ATable;     
    OK
    2014-07-06 01:30:02
    Time taken: 0.094 seconds, Fetched: 1 row(s)
    
  2. ==============================

    2.UDF를 사용하는 대신 datetime에 초를 더하고 unix_timestamp ()로 변환 한 다음 결과를 다시 datetime으로 변환 할 수 있습니다.

    UDF를 사용하는 대신 datetime에 초를 더하고 unix_timestamp ()로 변환 한 다음 결과를 다시 datetime으로 변환 할 수 있습니다.

    예:

    select from_unixtime(unix_timestamp('2015-12-12 16:15:17')+3600);
    

    여기에 한 시간 추가했습니다.

    hive> select from_unixtime(unix_timestamp('2015-11-12 12:15:17')+${seconds_in_hour});
    OK
    2015-11-12 13:15:17
    Time taken: 0.121 seconds, Fetched: 1 row(s)
    

    따라서, 분을 추가 할 경우 분당 * 60을 더해야합니다.

  3. from https://stackoverflow.com/questions/30399544/add-minutes-to-datetime-in-hive by cc-by-sa and MIT license