package com.ymdd;
import java.text.DecimalFormat;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class HiveUdf extends UDF {
public static String DAY="Day";
public static String HOUR="Hour";
public static String MINT="Min";
public static String SECOND="Sec";
public static String split = ":";
public static DecimalFormat df = new DecimalFormat("######0.00");
public Text evaluate(double d) {
int day = (int) (d / 86400) ;
int hour =(int) (( d % 86400 ) / 3600);
int min = (int) ((d % 3600 ) / 60);
double sec = d % 60 ;
df.format(sec);
StringBuffer sbf = new StringBuffer();
if (day != 0)
{
sbf.append(day+DAY+hour+HOUR+min+MINT+sec+SECOND);
}else if (hour != 0)
{
sbf.append(hour+HOUR+min+MINT+sec+SECOND);
}else if (min != 0)
{
sbf.append(min+MINT+sec+SECOND);
}else if (sec != 0)
{
sbf.append(sec+SECOND);
}else
{
sbf.append(0);
}
return new Text(sbf.toString());
}
public static void main(String[] args) {
HiveUdf hu = new HiveUdf();
System.out.println(hu.evaluate(12.23));
System.out.println(hu.evaluate(106401.23));
}
}
import java.text.DecimalFormat;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class HiveUdf extends UDF {
public static String DAY="Day";
public static String HOUR="Hour";
public static String MINT="Min";
public static String SECOND="Sec";
public static String split = ":";
public static DecimalFormat df = new DecimalFormat("######0.00");
public Text evaluate(double d) {
int day = (int) (d / 86400) ;
int hour =(int) (( d % 86400 ) / 3600);
int min = (int) ((d % 3600 ) / 60);
double sec = d % 60 ;
df.format(sec);
StringBuffer sbf = new StringBuffer();
if (day != 0)
{
sbf.append(day+DAY+hour+HOUR+min+MINT+sec+SECOND);
}else if (hour != 0)
{
sbf.append(hour+HOUR+min+MINT+sec+SECOND);
}else if (min != 0)
{
sbf.append(min+MINT+sec+SECOND);
}else if (sec != 0)
{
sbf.append(sec+SECOND);
}else
{
sbf.append(0);
}
return new Text(sbf.toString());
}
public static void main(String[] args) {
HiveUdf hu = new HiveUdf();
System.out.println(hu.evaluate(12.23));
System.out.println(hu.evaluate(106401.23));
}
}