我正在尝试用Scala(使用Eclipse)编写Pig UDF。我已将pig.jar添加为Java构建路径中的库,这似乎解决了以下2个导入:
- import org.apache.pig.EvalFunc
- import org.apache.pig.data.Tuple
但是我遇到了2个无法解决的错误:
- org.apache.pig.EvalFunc[T]没有构造函数
- value get不是org.apache.pig.data.Tuple的成员(尽管我确定Tuple有get方法)
以下是完整代码:
package datesUDFs
import org.apache.pig.EvalFunc
import org.apache.pig.data.Tuple
class getYear extends EvalFunc {
val extractDate = """^(\d\d\d\d)-\d\d-\d\d \d\d:\d\d:\d\d""".r
def isDate(dtString: String): Boolean = extractDate.findFirstIn(dtString).nonEmpty
override def exec(input: Tuple): Int = input.get(0) match {
case dtString: String =>
if (!isDate(dtString)) throw new IllegalArgumentException("Invalid date string!")
else (for (extractDate(year) <- extractDate.findFirstIn(dtString)) yield year).head.toInt
case _ => throw new IllegalArgumentException("Invalid function call!")
}
}
有人能帮助我解决这个问题吗?
先谢谢了!!!