hiveudf 함수 지정 날짜 가져오기
코드는 다음과 같습니다.
package hive.udf;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.hive.ql.exec.UDF;
public class date_return extends UDF {
public String exvaluate(String strDate) throws ParseException {
// String strDate = "2017/04/23 16:45:12"; //
String dateM = strDate.toString();
boolean status = dateM.contains("-");
if (status){
SimpleDateFormat lsdStrFormat = new SimpleDateFormat("yyyy-MM-dd");// SimpleDateFormat
Date strD = lsdStrFormat.parse(dateM); // string data
Date lastDayOfMonth = getLastDayOfMonth(strD);// getLastDayOfMonth
return (lsdStrFormat.format(lastDayOfMonth));
}
else{
SimpleDateFormat lsdStrFormat = new SimpleDateFormat("yyyy/MM/dd");
Date strD = lsdStrFormat.parse(dateM);
Date lastDayOfMonth = getLastDayOfMonth(strD);
System.out.println(lsdStrFormat.format(lastDayOfMonth));
}
return null;
}
public static Date getLastDayOfMonth(final Date date) {
final Calendar cal = Calendar.getInstance();
// System.out.println("date :"+date);
cal.setTime(date);//setTime
// System.out.println(" :"+cal.getTime());
final int last = cal.getActualMaximum(Calendar.DAY_OF_MONTH);//
// System.out.println("last:"+last);
cal.set(Calendar.DAY_OF_MONTH, last);//
// System.out.println(" :"+cal.getTime());
return cal.getTime();
}
public static void main(String[] args) throws ParseException {
System.out.println(new date_return().exvaluate("2018-02-07"));
}
}
나중에 논리를 다시 써서 됐어요.
코드는 다음과 같습니다.
package hive.udf;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.apache.hadoop.hive.ql.exec.UDF;
public class date_return extends UDF {
public String evaluate(String thisdate) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
if (thisdate.length()==8)
format = new SimpleDateFormat("yyyyMMdd");
// :
Calendar c = Calendar.getInstance();
Date thisb=null;
try {
thisb=format.parse(thisdate);
} catch (ParseException e) {
e.printStackTrace();
}
c.setTime(thisb);
c.add(Calendar.MONTH, 0);
// c.set(Calendar.DAY_OF_MONTH,1);// 1 ,
// String first = format.format(c.getTime());
// System.out.println("===============first:"+first);
//
// Calendar ca = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
String last = format.format(c.getTime());
return last;
}
}
다 쓴 후에 이 파일 export를jar 패키지로 쳐서 업로드합니다
create function return_lastday as 'hive.udf.date_return' using jar 'hdfs:///udf/lastday.jar';
hue의hive와impala에서 이 함수를 사용하려면 Hiveserver와impaladaemon을 다시 시작해야 합니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.