自己写的udf demo

根据要求要实现一个查询日期及星期几的方法。写SQL太麻烦了,正好学习一下UDF

样例如下:

package com.**.**.**

import org.apache.hadoop.hive.ql.exec.UDF;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 输入"yyyy-mm-dd"
 * 返回"yyyy-mm-dd 星期X"
 */
public class DateTransToWeek extends UDF {
    public String evaluate(String inputStr) {
        if (inputStr == null || inputStr.trim().equals("")) {
            return "";
        }
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
        String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
        Calendar cal = Calendar.getInstance(); // 获得一个日历
        Date datet = null;
        try {
            datet = f.parse(inputStr);
            cal.setTime(datet);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一个星期中的某天。
        if (w < 0) {
            w = 0;
        }
        return inputStr + " " +weekDays[w];
    }
}

 

 

posted @ 2018-06-26 10:51  MikeSunny  阅读(384)  评论(0编辑  收藏  举报