我是java世界的新手..但基本上我正在尝试在pig-latin中编写用户定义的函数。
以下是相关代码。
public class time extends EvalFunc<String>{
public String exec(Tuple input) throws IOException {
if ((input == null) || (input.size() == 0))
return null;
try{
String time = (String) input.get(0) ;
DateFormat df = new SimpleDateFormat("hh:mm:ss.000");
Date date = df.parse(time);
String timeOfDay = getTimeOfDay(date);
return timeOfDay;
} catch (IOException e) {
throw e;
}
}
所以基本上输入是一个元组...我检查元组是否为空。 然后将该日期字符串转换为时间对象..然后解析时间部分.. 然后是函数
getTimeOfDay(date) returns a string... like breakfast, lunch dinner.. or empty string depending on the time hours..
现在的问题是我的日食说明和错误(红线)
Date date = df.parse(time);
String timeOfDay = getTimeOfDay(date);
说
Unhandled exception type ParseException
但无论我尝试什么(给我3个选项..添加catch子句到周围的尝试,添加异常到现有的catch块和环绕用try / catch ..),错误转移..但总是tehre。< / p>
我甚至不确定我是否可以改变程序的结构..(方法声明等)..
我该如何解决这个问题。
A quick guide on udf http://wiki.apache.org/pig/UDFManual
如果你认识猪..或者知道一个简单的方法..那么基本上我想要做的是...给出一个类型为“时间,id,金额”的输入字符串检查交易当天的什么时间制成?
感谢
答案 0 :(得分:1)
throws
声明会自动执行此操作。所以你的代码应该是:
public class time extends EvalFunc<String>{
public String exec(Tuple input) throws IOException {
if ((input == null) || (input.size() == 0))
return null;
try{
String time = (String) input.get(0) ;
DateFormat df = new SimpleDateFormat("hh:mm:ss.000");
Date date = df.parse(time);
String timeOfDay = getTimeOfDay(date);
return timeOfDay;
} catch (ParseException e) {
//how will I handle when df.parse(time) fails and throws ParseException?
//maybe:
return null;
}
} //exec
} //class