使用该udf函,可获得不同时间跨度的连续事件,以及对应区间长度的均值、方差
输入是事件发生时间的列表、输出是事件发生的一系列数值包括均值、方差等等。
代码如下:
package ***.****;
import org.apache.hadoop.hive.ql.exec.UDF;
import java.util.*;
/**
*
*/
public class timeGap extends UDF {
public String evaluate(ArrayList<String> event_time_list, int time_span){
Long time_gap = 0L;
String timestamp_first = event_time_list.get(0);
String timestamp = event_time_list.get(0);
Long time_install;
Double average_v;
Double variance;
Collections.sort(event_time_list);
if (event_time_list.size() > 1){
List<String> temp = new ArrayList<String>();
for (int i = 0; i < event_time_list.size() - 1; i++){
String t1 = event_time_list.get(i);
String t2 = event_time_list.get(i + 1);
if ((Long.valueOf(t2) - Long.valueOf(t1)) <= 15 * 60){
if (temp.size() == 0){
temp.add(t1);
temp.add(t2);
}else{
temp.add(t2);
}
}else{
if (temp.size() > 0){