自己写的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]; } }